ラボ > FuelPHP:基本情報関連、エラー絡み

FuelPHPでエラー

FuelPHPで出てきたエラーと対処をまとめていく・・・予定。

作成日:2017-11-30, 更新日:2020-11-26

syntax error, unexpected '['

PHPのバージョンが古いのが原因。

ErrorException [ Parsing Error ]:
syntax error, unexpected '['

APPPATH/vendor/〇〇〇/google-api-php-client/vendor/guzzlehttp/psr7/src/functions.php @ line 78

「[]」となっている箇所を「array()」にすれば良さげだけど・・・PHPのバージョンをアップするのが良い。

Composerのエラー

Composer is not installed. Please run "php composer.phar update" in the root to install Composer

参照:fuelphp1.7インスト時のcomposerのアップデート

新しいFuelPHPと古いPHPの組み合わせでエラー

Fuel\Core\PhpErrorException [ Warning ]:
openssl_encrypt() [<a href=’function.openssl-encrypt’>function.openssl-encrypt</a>]: Using an empty Initialization Vector (iv) is potentially insecure and not recommended
/〇〇〇/fuel/vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php @ line 967

参照:FuelPHP1.8をアップしたらエラー

セッションエラー

セッションをファイルにしているときに保存するフォルダが見つからないと出てくるエラー。

Fuel\Core\FuelException [ Error ]:
You have specify a valid path to store the session data files.

COREPATH/classes/session/file.php @ line 336

「セッション・データ・ファイルを格納する有効なパスを指定しました。」というエラー文になるそうだ。

対処は「app/config/session.php」の修正(or 対象のフォルダを作成 or 権限の設定)

'file' => array(
   'cookie_name'    => 'fuelfid',
   // 'path'           => '/tmp', // 下記のように修正
   'path'           => APPPATH.'/tmp',

en_USのWarning

エラーログを見たらWarningが出ていた。

WARNING - 2018-03-02 10:54:27 --> Fuel\Core\Fuel::init - The configured locale en_US is not installed on your system.

対処は「app/config/config.php」の修正

/**
 * Localization & internationalization settings
 */
// 'language'           => 'en', // Default language
// 'language_fallback'  => 'en', // Fallback language when file isn't available for default language
// 'locale'             => 'en_US', // PHP set_locale() setting, null to not set
'language' => 'ja',
'locale' => 'ja_JP.UTF-8',

ja_JP.UTF-8のWarning

エラーログを見たらWarningが出ていた。

WARNING - 2018-03-02 11:01:36 --> Fuel\Core\Fuel::init - The configured locale ja_JP.UTF-8 is not installed on your system.

FuelPHPが問題じゃなくて、使っているサーバ(Xampp)に「ja_JP」が無いのが問題。
※unix系のサーバだったらWarningは出ない・・・はず。

Win10 / Xampp

・「ja_JP」は「_(アンダースコア)」ではなく「-(ハイフン)」の「ja-JP」が正解っぽい。
※「C:\Windows\System32\driver」の下に「ja-JP」がいる。

例外処理(try-catch())でエラー

Uncaught exception Exception: 0

「\」マークをつければいい。

▼throwのトコ

throw new \Exception(〇〇〇);

▼catch()のトコ

catch (\Exception $e) {