1

空白を描いています。ローカルで動作するコードがあります (これは MAMP です)。nginx ubuntu ボックス (php-fpm を実行) に移動すると、何らかの理由で phpactiverecord が動作しなくなります。

私は最終的にこれにたどり着きました-すべてのモデルクラスを手動でロードする必要があります。コードの下に require_once() を追加すると、正常に動作します。そうしないと、次のようなエラーが表示されます。

PHP Fatal Error: Class not found ... 作成したモデルで..

これをどの方向にトラブルシューティングできるか、誰にもわかりませんか? モデル フォルダー (パブリック ルートにはありません) へのアクセス許可を確認し、cfg->set_model_directory に送信されるパスをエコーアウトして、正しいなど..

これはnginxまたはphpのように聞こえますか?これは私のMAMPで動作するので、nginxを推測していますか?

動作しません:

ActiveRecord\Config::initialize(
    関数 ($cfg) {
        $cfg->set_model_directory(BASE_PATH . '/models');
        $cfg->set_connections(
            配列(
                '開発' => 'mysql://blah:removed@localhost/com_dbname'
            )
        );
    }
);

作品:

ActiveRecord\Config::initialize(
    関数 ($cfg) {
        $cfg->set_model_directory(BASE_PATH . '/models');
        $cfg->set_connections(
            配列(
                '開発' => 'mysql://blah:removed@localhost/com_dbname'
            )
        );
    }
);

require_once(BASE_PATH . '/models/model1.php');
require_once(BASE_PATH . '/models/model2.php');

アップデート

問題の特定に役立つ実際のコードを追加します。

require_once ('../lib/php-activerecord/ActiveRecord.php');

ActiveRecord\Config::initialize(
    関数 ($cfg) {
        $cfg->set_model_directory('/var/www/uc1/models');
        $cfg->set_connections(
            配列(
                '開発' => 'mysql://test_usr:test_pwd@localhost/test_db'
            )
        );
    }
);
require_once ('/var/www/uc1/models/ucurls.php'); //モデルファイルの名前。これをnginxサーバーで機能させるには、手動で含める必要があります。
$_record = UCUrls::find_by_urlkey('example.com/123');
echo "urlkey=" . $_record->urlkey;
4

2 に答える 2

2

ファイルActiveRecord.phpに行を追加して、Windowsでこの問題を解決しました。

関数activerecord_autoload($class_name) の 39 行目または 40 行目

   $file = "$root/$class_name.php";
    //add this line
   $file = strtolower($file);
于 2014-06-09T20:22:09.123 に答える
0

ActiveRecord.php にトレースを設定して、ActiveRecord がモデルを検索している場所を確認します。しかし、あなたの問題はファイルシステムにあると思います-Mac OS Xはデフォルトで大文字と小文字を区別しないファイルシステムを使用しますが、Ubuntuの大文字と小文字を区別するファイルシステムを使用します。

したがって、モデル UCUrls は、/var/www/uc1/models/uurls.php ではなく、ファイル /var/www/uc1/models/UCUrls.php にある必要があります。

于 2013-10-07T20:49:33.287 に答える