クリーンインストールで 500 エラー
いつ発生するか...
あなたの HTTP サーバが、ファイルシステムに関してシンボリックリンクをフォローする十分なパーミッションを持たないとき。
解決方法
.htaccess ファイルをチェックし、次の行を修正します
Option +FollowSymLinks
読み込みできるように:
Option +SymLinksIfOwnerMatch
Fuel はかなり多くの設定があります。ときに設定が適切に作用するにはいくつかの作業が必要です。あなたのマシンをセットアップする際に起こるかもしれないいくつかのシナリオを以下にリストアップしました。
問題が以下にリストアップされていない場合や、リストされているが適当な解決方法が提供さいれていない場合は、問題トラッカー ( http://dev.fuelphp.com ) にレポートを上げてください。
あなたの HTTP サーバが、ファイルシステムに関してシンボリックリンクをフォローする十分なパーミッションを持たないとき。
.htaccess ファイルをチェックし、次の行を修正します
Option +FollowSymLinks
読み込みできるように:
Option +SymLinksIfOwnerMatch
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 自身 もサポートがなくなっています。
マルチバイト文字を扱う未知の状況下で発生する
PHP のバグらしく、このドキュメント(英語版)執筆時点では修正されていません。 殆どの人は PHP 5.3.x を利用しており、マルチバイト環境ではこの問題は報告されていません。 FuelPHP 開発チームにおいては、PHP 5.4.x の利用者で同じエラーに遭遇したという例はまだありません。
回避策として、 zend-multibyte と mbstring を無効にするか、違うバージョンの PHP を使うことが推奨されています。
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 の前にスラッシュが追加されていることに注意
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
Fuel には "output encoding" と呼ばれるセキュリティ機構があり、デフォルトで有効になっています。これは、 View や Presenter に渡されるあらゆる値は、あなたが明示的に安全だとマークしない限り、 危険だと考えることを意味します。 配列の中身やオブジェクトのプロパティを含む、安全でないすべての値は htmlentities を通過します。
View クラスでのセキュリティ についてもっと学んでください。
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" に変更します。
パスが正しく定義されていないことが原因で、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() コマンドを発行できません。これは、スレッドでキャッシュされ、発行されたコマンドは現在のスレッドに対してのみクリアするためです。
PHP がすでにティアダウンフェーズの時にエラーが起こり、エラーハンドラが利用できない状態にあることが原因です。
発生し得る原因は沢山ありますが、最もわかりやすい例を記しておきます: