-1

I have a question...I am running a php page daily through a crobtab and I seem to be getting erros when this code is run..

include(CLASS_PATH .'EmailAddressValidator.php');

so I applied this code...

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

but I also have live site at

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

and its been a pain doing back and forth changing my code fromtestsite to livesite is there an easier way to do this..

I've tried..

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');
}

Testing out all answers...will have a vote by monday end day

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.)您可以使用配置文件或环境变量来设置您的“环境”:

环境.ini

environment = livesite

cronscript.php:

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

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

现在将 environment.ini 添加到您的 livesite 和 testsite,每个在配置文件中都有相应的条目。

当然你也可以使用其他的配置类型,比如常量(define("MY_ENVIRONMENT", "livesite").

2.) 另一种方法是使用相对文件路径:

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

3.) 使用自动装载机

于 2012-04-29T19:08:04.100 回答
1

好吧,您可以使用该$_SERVER['SCRIPT_FILENAME']变量在运行时操作 if else 。

我的意思是你可以得到你是否正在使用testsitelivesite通过做一些substrexplode在变量上,并通过if 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 回答