トラブルシューティング

Fuel はかなり多くの設定があります。ときに設定が適切に作用するにはいくつかの作業が必要です。あなたのマシンをセットアップする際に起こるかもしれないいくつかのシナリオを以下にリストアップしました。

問題が以下にリストアップされていない場合や、リストされているが適当な解決方法が提供さいれていない場合は、issue tracker ( http://dev.fuelphp.com ) にレポートを上げてください。

クリーンインストール時の構文エラー

Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /Users/info/Sites/fuel/public/index.php on line 9

いつ発生するか...

5.3 以前のバージョンの PHP で Fuel を実行した時

解決方法

別のテストファイルで phpinfo(); をチェックし、5.3 以上が実行されているかどうかを確認します。詳細は 要件 にあります。

ローカルで開発している際に、サーバを PHP 5.3 の最新のバージョンにアップデートします。ローカルで開発していない場合は、ホスティング会社に尋ねる必要があります。5.3 より前のバージョンは単に私たちだけではなく、PHP 自身 もサポートがなくなっています。

I get "child pid [xxxx] exit signal Bus error" in autoloader.php

Happens When...

Under unknown circumstances when using multibyte support.

Solution

This seems to be a PHP bug, for which at the time of writing no fix has been released. Most people using PHP 5.3.x and multi-byte support don't report this issue. We have not seen reports of users with PHP 5.4.x that experience this same error.

As a workaround, it is suggested to disable zend-multibyte and mbstring, or try using a different version of PHP.

動作しているが index ページが 404 である

いつ発生するか...

php のインストールには index.php の後に .htaccess にクエスチョンマークを追加する必要がある場合があります。

解決方法

次のようにクエスチョンマークを追加します:

# URL リライトをオンに
RewriteEngine On

# インストールしたディレクトリ
RewriteBase /
# もし fuel が上になければ
# RewriteBase /public

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]
# index.php の後の ? に注意

fcgi のインストールの場合にはいくつかの解決方法があります:


RewriteRule ^(.*)$ index.php?$1 [L]
# ? の後のスラッシュが削除されていることに注意

#他のセットアップ方法:

RewriteRule ^(.*)$ /index.php/$1 [L]
# index.php の前にスラッシュが追加されていることに注意

Oil がデータベースに接続できないがアプリケーションは接続できる

mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/phil/Sites/fuel/fuel/core/classes/database/mysql/connection.php on 73

いつ発生するか...

コマンドラインでデータベースを設定しようとしたときに起こります。しばしば、MAMP で MySQL サーバを使用したときに起こります。その理由は、MAMP が提供している MAMP の PHP-CLI の インストールが間違っているためです。そのため PHP はデータベースサーバが不明になります。

注意: 問題を修正するために次のステップ実行する前に、通常のブラウザ接続してデータベース接続を修正します。

解決方法

database.php 内の "localhost" を "127.0.0.1" に変更します。

それが失敗する場合:

MAMP の mysql.socket にリンクするシンボリックリンクを作成します。

$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

場合によっては先にディレクトリを作成する必要があります:

$ sudo mkdir /var/mysql
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

ORM/DB が私のデータを HTML エンティティとして返す

いつ発生するか...

Fuel には "output encoding" と呼ばれるセキュリティ機構があり、デフォルトで有効になっています。これは、 View や ViewModel に渡されるあらゆる値は、あなたが明示的に安全だとマークしない限り、 危険だと考えることを意味します。 配列の中身やオブジェクトのプロパティを含む、安全でないすべての値は htmlentities を通過します。

解決方法

View クラスでのセキュリティ についてもっと学んでください。

Orm\Exception [ Error ]: Listing columns not failed

エラー

Orm\Exception [ Error ]: Listing columns not failed, you have to set the model properties with a static $_properties setting in the model.

いつ発生するか...

mysql への接続していないときに ORM モデルを使用した場合

解決方法

データベース設定の値が正しいか確認し、データベースへの接続をテストしてください。

プロパティを持つモデルを更新します。

protected static $_properties = array('id', 'title', 'contents', 'publish');

または、APPATH/config/db.php 内のデータベースの種類を "mysql" に変更します。

index.php の場所を変更した後、Asset が動作しない

解決方法

これは Asset クラスが index.php への相対パスを使用している為です。

修正するためには app/config/asset.php を正しいパスにセットするように変更しなければなりません。DOCROOT という定数 が index.php 内で定義されています。

define('DOCROOT', __DIR__.DIRECTORY_SEPARATOR);

app/config/asset.php でこれを使用可能です。これは asset パスをデフォルトのフォルダ DOCROOT/public/assets に戻します。そのサブフォルダには、css/、img/、js/ などが配置されています:

'paths' => array(DOCROOT.'public/assets/'),

解決方法

これは DOCROOT/index.php 内で、realpath() が相対パスで扱われているためです。これはパス情報をキャッシュし、シンボリックリンクも含みます。

これを修正するには、DOCROOT/index.php を変更し、キャッシュをクリアするシンボリックリンクを含むそれぞれのパスに clearstatcache() を使用しなければなりません。またはパスのキャッシュをクリアするために Web サーバをリロードすることもできます。 手動では clearstatcache() コマンドを発行できません。これは、スレッドでキャッシュされ、発行されたコマンドは現在のスレッドに対してのみクリアするためです。