【发布时间】:2023-04-06 05:19:01
【问题描述】:
我正在尝试包含这样一个简单的脚本:
ini_set('include_path', ini_get('include_path').':'.dirname(__FILE__));
include('../configuration/live/database.php');
当我运行脚本(使用 sudo)时,PHP 返回:
PHP 警告:include(../configuration/live/database.php):无法打开流:/home/adil/workspace-netbeans/trunk/applications/dudu/scripts/ejabberd_populate 中没有这样的文件或目录。 php 在第 17 行
为澄清起见,database.php 确实存在于
/home/adil/workspace-netbeans/trunk/applications/dudu/configuration/live/database.php
在我的脚本中,dirname(__FILE__) 返回
/home/adil/workspace-netbeans/trunk/applications/dudu/scripts
因此,以下工作:
include(dirname(__FILE__).'/../configuration/live/database.php')
我想了解的是为什么我的代码(使用 include_path)不起作用?有没有办法在 include_path 中查看包含文件是如何被搜索的?
同样的脚本在我们的生产服务器上运行得很好。它遵循相同的文件层次结构。
注意:最简单的解决方案是定义一个“SITE_ROOT”并预先添加包含,但这不是这篇文章的原因。我想知道为什么上述方法不起作用。
PS:我在 Ubuntu 10.04 上使用 PHP 5.3.2
【问题讨论】:
-
顺便说一句,如何定义 SITE_ROOT?
-
Brian,SITE_ROOT 只是我定义的一个常量,它具有我的应用程序的绝对路径,如下所示:define('SITE_ROOT','/absolute/path/to/my/app/root/ ');