-1

質問があります...私は毎日crobtabを介してphpページを実行していますが、このコードを実行するとエラーが発生しているようです。

include(CLASS_PATH .'EmailAddressValidator.php');

だから私はこのコードを適用しました...

if(file_exists('/var/www/testsite/classes/EmailAddressValidator.php')){
    include('/var/www/testsite/classes/EmailAddressValidator.php');
}else{
    include(CLASS_PATH .'EmailAddressValidator.php');
}

でもライブサイトもあります

/var/www/livesite/classes/EmailAddressValidator.php

testsiteコードをからに変更するのlivesiteは面倒でした。これを行う簡単な方法があります。

私はもう試した..

if(file_exists('/var/www/testsite/classes/EmailAddressValidator.php')){
    include('/var/www/testsite/classes/EmailAddressValidator.php');
elseif(file_exists('/var/www/livesite/classes/EmailAddressValidator.php')){
    include('/var/www/livesite/classes/EmailAddressValidator.php');
}else{
    include(CLASS_PATH .'EmailAddressValidator.php');
}

すべての回答をテストしています...月曜日の終了日までに投票します

4

5 に答える 5

2

代わりに相対パスを使用できます

../classes/EmailAddressValidator.php

またはパスが何であれ。

于 2012-04-29T19:07:30.530 に答える
2

特に本番環境と開発環境の間で頻繁に変更する場合は、一貫して定義されたディレクトリの場所を使用していることを確認する必要があります。さまざまなオペレーティングシステムでも作業している場合、ディレクトリ構造を正しくすることは首の痛みになる可能性があるため、物事を一元化すると、作業が大幅に楽になります。

たとえばCLASS_PATH、定数として定義していることを確認しますか?

他のことをする前に、現在のディレクトリの場所を見つけることをお勧めします。

$current_dir = dirname(__FILE__);

次に、この変数を使用して先に進みます。

$test_dir = $current_dir . '../testsite/';
$live_dir = $current_dir . '../livesite/';
$class_dir = $current_dir . '../classes/';

if(file_exists("$test_dir/EmailAddressValidator.php"))
{
    include("$test_dir/EmailAddressValidator.php");
}
elseif(file_exists("$live_dir/EmailAddressValidator.php"))
{
    include("$live_dir/EmailAddressValidator.php");
}
else
{
    include("$class_dir/EmailAddressValidator.php");
}
于 2012-04-29T19:15:38.660 に答える
1

1.)構成ファイルまたは環境変数を使用して「環境」を設定できます。

environment.ini

environment = livesite

cronscript.php:

$config      = parse_ini_file("./environment.ini");
$environment = $config["environment"];

include "/var/www/$environment/classes/EmailAddressValidator.php";

次に、environment.iniをライブサイトとテストサイトに追加します。それぞれの構成ファイルに対応するエントリがあります。

もちろん、定数(。)などの他の構成タイプを使用することもできますdefine("MY_ENVIRONMENT", "livesite")

2.)別のアプローチは、相対ファイルパスを使用することです。

include "../relative/path/to/classes/EmailAddressValidator.php"

3.)オートローダーを使用する

于 2012-04-29T19:08:04.100 に答える
1

$_SERVER['SCRIPT_FILENAME']さて、実行時にifelseを操作するために変数を使用することができます。

つまり、変数を使用しているか、実行しているtestsiteかを取得し、ステートメントのパスを使用してそれを渡すことができます。livesitesubstrexplodeif else

于 2012-04-29T19:09:50.083 に答える
0

通常、次のようにします

include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'EmailAddressValidator.php';

これにより、現在実行中のファイルのパスが自動的に検出され、実行中のファイルに対する相対的な位置に基づいて、必要なファイルが含まれます。

DIRECTORY_SEPARATOR定数を使用すると、コードがWindowsまたはLinuxシステムで確実に機能するようになります。

于 2012-05-02T14:33:52.990 に答える