0

私はCodeIgniter2.1を使用しており、本番サーバーはPHP 5.4.3-1に更新されましたが、phpactiverecordを使用するページには何も表示されず、エラーも表示されません。

私のテストサーバーでは、5.3.6で正常に動作します。

2012年5月の夜間ビルドバージョンを使用しています。古いバージョンと安定バージョンを試してみます。

Php-activerecordはphp5.4.3ではうまく機能しませんか?


編集:私の新しいサーバーにはがないことがわかりましたdisplays_errors = ON。有効にすると、次のエラーが表示されます。

Fatal error: Class 'Category' not found in /srv/www/framework/application/controllers/categories.php on line 26

26行目:

$data["categories"] = Category::findby($parent_id);

カテゴリ.phpはに存在し/srv/www/framework/application/controllers/、これはPHP5.3.6で正常に機能します。

もっと何かを呼び出す必要がありますか、それとも別の方法で呼び出す必要がありますか?

4

1 に答える 1

0

私は解決策を見つけました。

このソリューションは、最新のSPARKSバージョンを介したphp-activerecord用です。

autoload_functionをデバッグすると、モデルファイルが最初の文字を大文字にしてロードされ、PHP 5.4.3でのみロードされ、5.3.xではロードされず、ファイルがロードされないことがわかりました。

ActiveRecord.phpをで見つけてください

yourfolder/sparks/php-activerecord/0.0.0.2/vendor/php-activerecord

関数を検索します。

activerecord_autoload($class_name)

49行目の変更:

    $file = $root.DS.$file_name;

にとって

    $file = $root.DS.strtolower($file_name);

そして今、それは機能します!

pdこれを解決する前に、PHP5.4.3で別の奇妙なケースを見つけました。データベースのパスワードの文字列に「/」が含まれている場合、関数parse_url()はfalseを返します。このため、php-activerecordは、関数file parse_connection_url()でファイルyourfolder / sparks / php-activerecord / 0.0.0.2 / vendor / php-activerecord / lib/connection.phpのデータベースに接続できませんでした。

PHP 5.3では、正しい配列を返します。

于 2012-06-07T18:59:22.370 に答える