我有一个需要包含此文件的cron作业:
require '../includes/common.php';
Run Code Online (Sandbox Code Playgroud)
但是,当它通过cron作业(而不是我的本地测试)运行时,相对路径不起作用.cron作业运行以下文件(在实时服务器上):
/home/username123/public_html/cron/mycronjob.php
Run Code Online (Sandbox Code Playgroud)
这是错误:
Fatal error: require(): Failed opening required '../includes/common.php'
(include_path='.:/usr/lib/php:/usr/local/lib/php') in
/home/username123/public_html/cron/mycronjob.php on line 2
Run Code Online (Sandbox Code Playgroud)
使用与cron作业相同的绝对格式,common.php将位于
/home/username123/public_html/includes/common.php
Run Code Online (Sandbox Code Playgroud)
这是否意味着我必须用以下代码替换我的第2行:
require '/home/username123/public_html/includes/common.php';
Run Code Online (Sandbox Code Playgroud)
?
谢谢!
通过cli调用php时,当前目录不会更改为脚本之一.我在crontab中运行的所有脚本都是通过CLI运行的,所以这是一个问题.
我目前固定做一个CHDIR()与其中的脚本是绝对路径的问题,但我真的不喜欢硬编码路径到这样的东西.
我正在寻找最便携/可靠的方法来确保当前工作目录是脚本所在的目录.