如果我通过cron运行php脚本时使用相对路径或绝对路径是否重要?

时间:2011-02-07 14:54:07

标签: php xml cron

我目前正在编写一个脚本,我试图通过cron实现自动化。通过终端运行脚本很好,但是当我尝试使用crontab运行脚本时,我遇到了一些问题。

我的部分脚本通过DOMDocument::loadXML()DOMDocument::validate()加载并验证和xml文件,并且在尝试验证声明时,php会抛出错误:

Failed to load external entity: /linuxuser/homefolder/my_dtd.dtd

在xml文件中,dtd设置为:

../../../../../../../my_dtd.dtd

服务器是否存在一些配置错误,或者此时我的php代码更可能出错?它似乎抓住我的linux主目录而不是相对于xml文件的路径。只是想知道是否有其他人看到过这样的问题,或者是否能指出我正确的方向。感谢。

3 个答案:

答案 0 :(得分:1)

最有可能的问题是工作目录和解决相对路径。

答案 1 :(得分:1)

引用differences in CLI usage(命令行界面)的PHP文档:

  

CLI SAPI 更改   当前目录到的目录   执行的脚本!

当PHP脚本通过CRON运行时,它将在用户的主目录中执行。您可以将脚本使用的所有相对路径引用替换为绝对路径,也可以将其放在脚本的开头:

chdir(dirname(__FILE__)); # for PHP 5.2.x and below
# or
chdir(__DIR__); # for PHP 5.3+

答案 2 :(得分:0)

在xml文件中尝试绝对路径。