包含文件时出现以下错误。
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
是可以的。
答案 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'