这是什么意思"(include_path ='.:/ usr/share/pear:/ usr/share/php')"?

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个部分

  • . (这意味着您的代码所在的当前目录)
  • 的/ usr /共享/梨
  • 的/ usr /共享/ PH

任何包含()/ require()事物的尝试都将按此顺序查看这些目录.

它告诉你在错误消息中告诉你哪里找不到你想要的文件()

对于你的第一个要求,如果你的index.php中包含它,那么你不需要dir的东西,只需这样做:

require_once ( 'db/config.php');
Run Code Online (Sandbox Code Playgroud)


Abh*_*oel 8

解决问题的方法

正如Uberfuzzy所提到的[问题的真正原因]

如果你看一下PHP常量[PATH_SEPARATOR] [1],你会看到它是":".

如果您使用该字符拆分字符串".:/ usr/share/pear:/ usr/share/php",您将获得3个部分

  • . (这意味着您的代码所在的当前目录)
  • 的/ usr /共享/梨
  • 的/ usr /共享/ PH

任何包含()/ require()事物的尝试都将按此顺序查看这些目录.

它告诉你在错误消息中告诉你哪里找不到你想要的文件()

那是错误的原因.

现在来解决

  1. 第1步:找到你用命令php.ini文件php --ini(在我的情况:/etc/php5/cli/php.ini)
  2. 第2步:找到include_path使用VI esc然后按/include_pathenter
  3. 第3步:如果注释并取消注释该行,则包含您的服务器目录,您的路径应如下所示include_path = ".:/usr/share/php:/var/www/<directory>/"
  4. 第4步:重启apache sudo service apache2 restart

就是这个.希望能帮助到你.


cas*_*tis 0

这只是显示 PHP 在何处查找文件的目录。确保它cron1.php存在于您认为存在的地方。并确保您知道dirname(__FILE__)$_SERVER['DOCUMENT_ROOT']指向您期望的位置。

该值可以在 php.ini 文件中调整。