通过 cron 运行 php 脚本时使用相对路径还是绝对路径有关系吗?
我目前正在编写一个脚本,尝试通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
引用 PHP 文档来了解 CLI 使用方面的差异(命令行界面):
当 PHP 脚本通过 CRON 运行时,它在用户的主目录上执行。您可以将脚本使用的所有相对路径引用替换为绝对路径引用,或者将其放在脚本的开头:
Quoting the PHP documentation for differences in CLI usage (command-line interface):
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:
最有可能的是,问题出在工作目录和解析相对路径上。
Most likely, the problem is in working dir and resolving relative path.
尝试 xml 文件中的绝对路径。
Try absolute path in your xml file.