2017年9月9日土曜日

symfonyが動かない時はとりあえずキャッシュクリア

理由もなくコード更新後にsymfonyが動かない場合、キャッシュをクリアすれば大概動く。
ただし、各環境ごとにクリアする必要があるかも知れない。
開発環境:
$ php app/console cache:clear
製品環境:
$ php app/console cache:clear --env=prod

Bundle新規作成後のClassNotFoundExceptionに対してはcomposerを設定

Bundle新規作成後はcomposer.jsonのautoloadの設定を変更し、以下のコマンドを実行:
$ composer dumpautoload
さもなくばClassNotFoundExceptionが出る。

新しいBundle「Hyoujun\AppBundle」を作るとする:
$ php app/console generate:bundle
Are you planning on sharing this bundle across multiple applications? [no]: yes
Bundle namespace: Hyoujun\AppBundle
Bundle name [HyoujunAppBundle]:
Target Directory [src/]:
Configuration format (annotation, yml, xml, php) [xml]: annotation

その場合、composer.jsonの下記3行目を変更:
"autoload": {
    "psr-4": {
        "Hyoujun\\": "src/Hyoujun"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},
修正を反映させるため以下のコマンドを実行:
$ composer dumpautoload
これでClassNotFoundExceptionは出なくなる。

docker経由のsymfonyが自動生成したファイルの所有者に注意

docker上でsymfonyを動かしている場合で、ボリュームをローカルに指定している時、docker経由でapp/consoleコマンドを実行すると、ローカル上に生成されたファイルがrootの所有になる場合がある。
$ sudo chown -R user:user

で戻す。

localhostでもポートが違ったら、ガードをコメントアウト

dockerでsymfonyを動かしており、localhostであってもポートが80でない場合app_dev.phpとconfig.phpにアクセスできない。
その場合、 両ファイルの一部をコメントアウトすることでアクセスできる。

以下は10〜18行目をコメントアウトしている:

// web/app_dev.php
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;

// If you don't want to setup permissions the proper way, just uncomment the following PHP line
// read https://symfony.com/doc/current/setup.html#checking-symfony-application-configuration-and-setup
// for more information
//umask(0000);

// This check prevents access to debug front controllers that are deployed by accident to production servers.
// Feel free to remove this, extend it, or make something more sophisticated.
//if (isset($_SERVER['HTTP_CLIENT_IP'])
//    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
//    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'], true) || PHP_SAPI === 'cli-server')
//) {
//    header('HTTP/1.0 403 Forbidden');
//    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
//}

require __DIR__.'/../vendor/autoload.php';
Debug::enable();

$kernel = new AppKernel('dev', true);
if (PHP_VERSION_ID < 70000) {
    $kernel->loadClassCache();
}
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

以下は16〜22行目をコメントアウトしている。
// web/config.php
/*
 * ************** CAUTION **************
 *
 * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
 * the installation/update process. The original file resides in the
 * SensioDistributionBundle.
 *
 * ************** CAUTION **************
 */

if (!isset($_SERVER['HTTP_HOST'])) {
    exit("This script cannot be run from the CLI. Run it from a browser.\n");
}

//if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
//    '127.0.0.1',
//    '::1',
//))) {
//    header('HTTP/1.0 403 Forbidden');
//    exit('This script is only accessible from localhost.');
//}

require_once dirname(__FILE__).'/../var/SymfonyRequirements.php';

2014年10月31日金曜日

2014年10月27日〜31日業務報告

標題の期間、システム開発を行いました。
テスト可能な状態にリファクタリングしております。

2014年10月24日金曜日

2014年10月20日〜24日業務報告

標題の期間、システム開発を行いました。
テスト可能な状態にリファクタリングしております。

2014年10月17日金曜日

2014年10月16日、17日業務報告

標題の期間、指貫風パンツ・ティーリの製品縫製、
及び平緒(束帯の前に垂らす飾り帯)のサンプル作成を行いました。