ket*_*hah 18 php cron apache2 path include-path
我在EC2上有文件结构,如:但面临一些文件引用问题.
index.php
-db
-config.php
-cron
-cron1.php
Run Code Online (Sandbox Code Playgroud)
我尝试过文件引用:
`require_once (dirname(__FILE__).'/db/config.php');`
`require_once (($_SERVER['DOCUMENT_ROOT']).'/db/config.php');`
Run Code Online (Sandbox Code Playgroud)
但是cron没有run.it在邮件中给出错误
`PHP Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
PHP Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3
Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3`
Run Code Online (Sandbox Code Playgroud)
Ube*_*zzy 12
如果你看一下PHP常量PATH_SEPARATOR,你会发现它是":".
如果您使用该字符拆分字符串".:/ usr/share/pear:/ usr/share/php",您将获得3个部分
任何包含()/ require()事物的尝试都将按此顺序查看这些目录.
它告诉你在错误消息中告诉你哪里找不到你想要的文件()
对于你的第一个要求,如果你的index.php中包含它,那么你不需要dir的东西,只需这样做:
require_once ( 'db/config.php');
Run Code Online (Sandbox Code Playgroud)
正如Uberfuzzy所提到的[问题的真正原因]
如果你看一下PHP常量[PATH_SEPARATOR] [1],你会看到它是":".
如果您使用该字符拆分字符串".:/ usr/share/pear:/ usr/share/php",您将获得3个部分
任何包含()/ require()事物的尝试都将按此顺序查看这些目录.
它告诉你在错误消息中告诉你哪里找不到你想要的文件()
那是错误的原因.
现在来解决
php --ini(在我的情况:/etc/php5/cli/php.ini)include_path使用VI esc然后按/include_path再enterinclude_path = ".:/usr/share/php:/var/www/<directory>/"sudo service apache2 restart就是这个.希望能帮助到你.
这只是显示 PHP 在何处查找文件的目录。确保它cron1.php存在于您认为存在的地方。并确保您知道dirname(__FILE__)并$_SERVER['DOCUMENT_ROOT']指向您期望的位置。
该值可以在 php.ini 文件中调整。