0

すべて個別のPHPファイルに保存されている一連のクラスを使用するWebサイトがあります。これらのファイルの一部には、次のような追加のクラスファイルがサブインクルードされています。

require_once($_SERVER['DOCUMENT_ROOT'].'/../models/database.model.php');

問題は、同じクラス ファイルのセットを使用する cron ジョブを実行したいのですが、サブインクルード クラス ファイルへのパスを実行すると壊れてしまうことです。

含まれているクラス ファイルのパスを指定して、それらが自分の Web サイトと任意の cron ジョブで機能するようにするにはどうすればよいですか?

cron ジョブへのパス:

$HOME/bin/updatephotos.php

クラスへのパス:

$HOME/models/....

パブリック Web ルートへのパス:

$HOME/www/...

4

3 に答える 3

1

絶対パスを使用して解決できます

require_once(__DIR__ . '/../models/database.model.php');

別の方法は、ちょっとした (醜い) ハックを使用することです: $_SERVER['DOCUMENT_ROOT'] を自分で設定できます

if (empty($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = __DIR__ . '/../www';
}
于 2012-07-18T23:55:29.400 に答える
1

さらに調査した結果、次の解決策が見つかりました。

function __autoload($class_name) {
    require_once realpath(dirname(__FILE__).'/../models/'.$class_name.'.model.php');
}

これは、cron ジョブと Web サイトで機能します。

于 2012-07-19T02:20:05.060 に答える
0

インクルード フレームワークは、システム変数を意図しない用途に使用しています。他のインクルード ファイルが使用する独自の定数を宣言する必要があります。次に、1 つの中心的な場所、理想的にはフレームワークのメインのインクルード ポイントで宣言できます。

于 2012-07-19T02:33:47.147 に答える