无法包含文件并且“无法打开流:没有此类文件或目录”警告消息

时间:2014-02-22 15:48:26

标签: php file include centos

包含文件时出现以下错误。

 Warning:  require(home2/myusername/public_html/inc/config.php) 
 [function.require]: failed to open stream: No such file or directory in 
 /home2/myusername/public_html/inc/bootstrap.php on line 32

 Fatal error:  require() [function.require]: Failed opening required 
 'home2/myusername/public_html/inc/config.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in 
 /home2/myusername/public_html/inc/bootstrap.php on line 32

在Windows PC上运行的localhost中工作正常。但是当我将文件上传到我的共享托管服务器CentOS时,我收到了这个错误。

home2/myusername/public_html/index.php包含/inc/bootstrap.php,然后尝试加入/inc/config.php。文件config.php确实存在于服务器上。函数home2/myusername/public_html/返回getcwd()

以下是bootstrap.php中发出错误的前几行代码。

define('APP_DIR', 'app');   

if( !defined('APP_ROOT') ){
    $APP_ROOT = trim(getcwd(), '/').'/';
    if(isset($_GET['bootstrap'])) $APP_ROOT .= APP_DIR . '/';
    define('APP_ROOT', $APP_ROOT);
}

if( !defined('ROOT') ){
    $ROOT = str_replace(APP_DIR, '', trim(APP_ROOT, '/'));
    if( strrpos($ROOT, '/') != strlen($ROOT)-1 ) $ROOT .= '/'; 
    define('ROOT', $ROOT);
}

# path to inc/ folder
define('INC', ROOT.'inc/');

# System configuration variables
require INC . 'config.php';

我在/public_html/.htaccess中也有一个网址重写。

RewriteRule ^index.php$ index.php?bootstrap [L]

因此,当我浏览example.com/index.php时,它会重写为example.com/index.php?bootstrap。这是我得到错误的情况。

这是我的目录结构:

/public_html/
    |__ inc
    |   |__ bootstrap.php
    |   |__ config.php
    |__ .htaccess
    |__ index.php <--- I'm browsing this    

我认为问题与绝对路径文件包含有关。 index.php中的相对路径文件包含require 'inc/bootstrap.php是可以的。

2 个答案:

答案 0 :(得分:5)

如果您的文件位于:

/home2/myusername/public_html/index.php

你要包含的bootstrap.php文件位于:

/home2/myusername/public_html/inc/bootstrap.php

正确的包含行是:

include_once $_SERVER['DOCUMENT_ROOT']."/inc/bootstrap.php";

$ _ SERVER ['DOCUMENT_ROOT']等于/ home2 / myusername / public_html

答案 1 :(得分:1)

您的路径很可能未正确配置。大多数时候这是一个简单的解决方案。您能否发布包含文件的config.php和bootstrap.php的代码。

您最有可能需要更改以下内容。

/inc/config.php到config.php。

因为它在同一个文件夹中。

编辑:

你错过了'/'

Failed opening required 'home2/myusername/public_html/inc/config.php' 

应该是这个

'/home2/myusername/public_html/inc/config.php'