2017-03-20 19 views
1

我继续得到同样的错误:PHP致命错误是不允许网站显示

Warning: require_once(/site/web/www/****/finalproject/utils/tags.php): 
failed to open stream: No such file or directory in 
/home/****/public_html/finalproject/utils/main.php on line 20 

Fatal error: require_once(): Failed opening required 
'/site/web/www/****/finalproject/utils/tags.php' 
(include_path='/site/web/www/****/finalproject/') in 
/home/****/public_html/finalproject/utils/main.php on line 20 

我不能修改任何服务器配置文件。有问题的代码似乎是:

<?php 

// Get the document root 
$doc_root = $_SERVER['DOCUMENT_ROOT']; 

// Get the application path 
$uri = $_SERVER['REQUEST_URI']; 
$dirs = explode('/', $uri); 
$app_path = '/' . $dirs[1] . '/' . $dirs[2] . '/'; 

// Set the include path 
set_include_path($doc_root . $app_path); 
echo $doc_root . $app_path; 
echo "<br />"; 
$include_path = get_include_path(); 
echo $include_path; 

// Get the common code 
require_once ('utils/tags.php'); 
require_once ('model/database.php'); 

我非常确定它与包含路径有关,但我无法弄清楚。有人可以帮我吗?
是的,这是一个学校项目,虽然让这个工作不是任务的一部分。我几乎整天都在努力工作,真的在我的智慧结束。

感谢

回答

1

您的环境可能是我的略有不同,因为我不认为这是在呼唤你finalproject路径做。运行你的代码给我调试时(注意,我是一个Linux机器上),因为我没有看到finalproject目录的任何地方这是不正确的以下

/var/www/html //$_SERVER['DOCUMENT_ROOT'] 
/test.php// // echo $app_path 
/var/www/html/test.php// // echo $include_path 

。当然,这是假设您的代码在/var/www/html/finalproject/中运行。

一个建议是,如果您有一个配置文件或每次坐在文档根目录下的文件,请在此处设置文档根变量。不依赖于$_SERVER变量简单的一个内胆是:

$documentRoot = dirname(__FILE__).'/'

现在我们有/var/www/html/finalproject/输出显示。更好的是,将其设置为一个定义:

define('ROOT_DIR', dirname(__FILE__).'/'); 
// Get the common code 
require_once (ROOT_DIR . 'utils/tags.php'); 
require_once (ROOT_DIR . 'model/database.php); 

我希望这有助于调试您的情况。

+0

Thanks @Cumbo。这不是我正在寻找的完整解决方案,因为我必须将ROOT_DIR添加到所有'require_once'函数中,但这足够解决问题。我很感激帮助。 – Harlan

+1

@Harlan使用上面的解决方案,您仍然可以设置包含路径。 'set_include_path(ROOT_DIR);'当输出包含的路径时''这会给'/ var/www/html/finalproject /'。 – Dave