我想在root crontab中设置一个每天运行的工作.但我希望它从特定目录执行它,以便它可以找到它需要的所有文件,因为应用程序有一堆相对路径.
无论如何,我可以告诉crontab从特定目录运行吗?
如果PHP脚本作为cron脚本运行,则如果使用相对路径,则包含通常会失败.例如,如果你有
require_once('foo.php');
Run Code Online (Sandbox Code Playgroud)
在命令行上运行时将找到文件foo.php,但在从cron脚本运行时则不会找到.
一个典型的解决方法是首先将chdir添加到工作目录,或使用绝对路径.但是,我想知道导致此行为的cron和shell之间有什么不同.为什么在cron脚本中使用相对路径时会失败?
我正在将我的网站从一台服务器转移到另一台服务器.我有一些PHP脚本使用is_readable函数,它使用当前的工作目录.
在旧服务器上,当我调用getcwd()时,它会输出正在执行脚本的文件夹.在新服务器上,它输出根目录'/'.
我想知道如何配置PHP以使用当前文件夹而不是'/'. 我不想更改任何已在旧服务器上运行的PHP代码.我可以配置新服务器,但不知道要更改的设置.我正在使用apache2,如果这有帮助的话.
编辑:好像我的工作目录不像我想的那样.当我创建一个testFile.php和echo getcwd()时,它显示了php文件所在的目录.但在我的问题文件中,在同一目录中,getcwd()显示为'/'
我试图通过cron作业运行一个php文件,当我手动运行它时文件工作正常,但是当我在cron作业中运行它时,我收到此错误:
Warning: include(classes/EmailAddressValidator.php): failed to open stream: No such file or directory in /var/www/onecent_dev/classes/MiscFunctions.php on line 3
Warning: include(): Failed opening 'classes/EmailAddressValidator.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/onecent_dev/classes/MiscFunctions.php on line 3
Run Code Online (Sandbox Code Playgroud)
MiscFunctions.php和EmailAddressValidator.php都是现有文件并且位于正确的位置,是什么给出的?
谢谢