我设置了一个cron脚本,该脚本每分钟在Webhost的CPanel中运行一次。 Cron可以正常运行,但是我遇到与脚本路径相关的问题,我不知道如何正确解决。我的大多数网站都使用/ home / mysite / public_html /作为根路径,但是cron脚本使用/ home / mysite /作为根路径,而没有public_html部分。
这会导致文件包含很多问题,因为我被迫在类加载器中通过检查默认路径和以public_html /开头的替代路径来解决此问题:
spl_autoload_register(function($class){
$className = str_replace("\\", "/", $class);
$classPath = "{$className}.php";
$altClassPath = "public_html/{$classPath}";
if(file_exists($classPath)) require $classPath;
elseif(file_exists($altClassPath)) require $altClassPath;
else throw new ClassNotFoundException("Fatal Error: Class {$class} either does not exist, or has its include path mis-configured!");
});
这让人感到乏味且容易出错,我一点也不喜欢它。有没有更好的方法来解决此问题?我尝试在cron脚本上使用set_include_path,但似乎对自动装带器也无济于事。
答案 0 :(得分:0)
刚才有同样的问题。看起来很简单,但是通常很难获得,因为每个人都知道这一点,所以没人大声说出来。
在我的案例中,使用PHP的所谓魔术常数解决了它。变量为:
__DIR__
并且它保存了所用脚本的路径。无论是直接运行还是包含在其他php文件中。因此,您可以使用它来编写相对路径,该路径始终从文件所在的位置开始。像这样的人:
include(__DIR__ . "/../somewhere/something.php");