我有一个问题......我每天都通过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');
}
测试所有答案......将在星期一结束日投票
答案 0 :(得分:2)
您可以使用相对路径
../classes/EmailAddressValidator.php
或无论路径是什么。
答案 1 :(得分: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");
}
答案 2 :(得分: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添加到您的livesite和testsite,每个都在配置文件中添加相应的条目。
当然,您可以使用其他配置类型,例如常量(define("MY_ENVIRONMENT", "livesite")
。
2.)另一种方法是使用相对文件路径:
include "../relative/path/to/classes/EmailAddressValidator.php"
3。)使用autoloader
答案 3 :(得分:1)
那么你可以使用$_SERVER['SCRIPT_FILENAME']
变量来操作运行时的if else。
我的意思是,您可以通过对变量执行某些testsite
或livesite
来获取substr
或explode
,并将其与if else
中的路径一起传递1}}陈述
答案 4 :(得分:0)
通常你会做以下
include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'EmailAddressValidator.php';
这会自动找到当前正在运行的文件的路径,并根据其与正在运行的文件相关的位置包含所需的文件。
使用DIRECTORY_SEPARATOR常量将确保您的代码可以在Windows或Linux系统上运行