我正在开发一个PHP项目,我在require_once中遇到错误(甚至在require中)
Warning: require_once(C:/wamp/www/MyFiles/MyProject/includes/db_config.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\MyFiles\MyProject\includes\autoloads.php on line 9
Fatal error: require_once() [function.require]: Failed opening required 'C:/wamp/www/MyFiles/MyProject/includes/db_config.php' (include_path='.;C:\php5\pear') in C:\wamp\www\MyFiles\MyProject\includes\autoloads.php on line 9
这就是我包含文件的方式
$root = $_SERVER['DOCUMENT_ROOT'];
//config..
require_once($root . '/MyFiles/MyProject/includes/db_config.php');
我尝试过使用
echo $root . '/MyFiles/MyProject/includes/db_config.php';
正确打印网址
即C:\wamp\www\MyFiles\MyProject\includes\db_config.php
我正在使用WAMP服务器5 autload.php和db_config.php在同一个文件夹中
答案 0 :(得分:0)
试试这个需要构造
require 'file';
..或此根设置
$root = realpath($_SERVER['DOCUMENT_ROOT']);
的更新强> 的 使用虚拟主机
答案 1 :(得分:0)
文件是否可读?
试试这个:
<?php
echo "Does file exist?". file_exists($file) ? 'true' : 'false';
echo "Is it readable?".is_readable($file) ? 'true' : 'false';
require_once $file;
您还可以使用相对于您所在文件的路径,而不是依赖于DOCUMENT_ROOT字符串:
<?php
$root = realpath(dirname(__FILE__));
此外,Windows中单独的目录是默认情况下的\,而不是/(即使对于require,也应该解决所有问题)。你可以使用一个预定义的常量,只是为了确保它在任何地方兼容:
require_once($root . DIRECTORY_SEPARATOR . 'MyFiles' . DIRECTORY_SEPARATOR . 'MyProject' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'db_config.php';
此外,如果您正在使用APC缓存,则可以尝试重新启动它,如果文件存在过时的缓存。 (E.G filemtime不正确)
答案 2 :(得分:0)
仔细检查服务器上是否存在该文件。如果由于某种原因你不能这样做,那就可以了:
if(file_exists($myFile)){
echo"The file is there";
}//end of file exists
else{
echo"the file does NOT exist....fool";
}//end of else - the file is not there
这是我能想到的唯一问题 - 文件不在应有的位置...尝试以上操作并让我更新。
答案 3 :(得分:0)
在Linux和Windows机器上,目录分隔符不同也可能存在问题。
也许尝试使用常量DIRECTORY_SEPARATOR
而不是硬编码分隔符?
答案 4 :(得分:0)
检查文件是否存在,如果存在,请检查文件的权限。