通过 cron 运行 php 脚本时使用相对路径还是绝对路径有关系吗?

发布于 2024-10-16 00:39:11 字数 650 浏览 2 评论 0原文

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

我的脚本的一部分通过 DOMDocument::loadXML() 和 DOMDocument::validate() 并且 php 在以下情况下抛出错误尝试验证说明:

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

在 xml 文件中,dtd 设置为:

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

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

I am currently working on a script that I am attempting to automate via cron. Running the script via terminal is just fine, but when I attempt to run the script with crontab, I am getting some issues.

Part of my script loads and validates and xml file via DOMDocument::loadXML() and DOMDocument::validate() and php throws an error when attempting to validate stating:

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

Within the xml file, the dtd is set to:

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

Is there some misconfiguration of the server or is it more likely something wrong with my php code at this point? It seems to grab my linux home directory rather than the path relative to the xml file. Just wondering if anyone else has seen an issue like this or could point me in the right direction. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

世界等同你 2024-10-23 00:39:11

引用 PHP 文档来了解 CLI 使用方面的差异(命令行界面):

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

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

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

Quoting the PHP documentation for differences in CLI usage (command-line interface):

The CLI SAPI does not change the
current directory to the directory of
the executed script!

When PHP scripts are run via CRON, it is executed on the user's home directory. You can either replace all relative path references used by the script to absolute, or place this on the start of the script:

chdir(dirname(__FILE__)); # for PHP 5.2.x and below
# or
chdir(__DIR__); # for PHP 5.3+
背叛残局 2024-10-23 00:39:11

最有可能的是,问题出在工作目录和解析相对路径上。

Most likely, the problem is in working dir and resolving relative path.

此生挚爱伱 2024-10-23 00:39:11

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

Try absolute path in your xml file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文