Apache:没有这样的文件或目录

时间:2015-06-12 18:36:14

标签: php apache .htaccess

我的网站在apache服务器上。 路径:/var/www/example.com/public_html

我正在尝试访问public_html文件夹中的文件。

PHP

require('/application/config/development/dev_config.php');

错误

  

PHP警告:require(/application/config/development/dev_config.php):无法打开流:第53行/var/www/example.com/public_html/index.php中没有此类文件或目录

当我尝试这样做时:

require('application/config/development/dev_config.php');

运行正常。 但是,我在项目中的所有地方使用了正斜杠。有没有办法在.htaccess文件中更改此设置?所以,我可以使用/

来访问它

Apache配置文件

<VirtualHost *:80>
   ServerAdmin admin@example.com
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /var/www/example.com/public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

2 个答案:

答案 0 :(得分:1)

Apache和PHP理解/不同

Apache 将您的 web root 视为根文件夹(/var/www/example.com/public_html/),而 PHP 则可以访问您的整个系统(所以'/'表示'/')。这意味着,而

<a href="/home.php">...</a>

实际上意味着/var/www/example.com/public_html/home.php

header('Location:/home.php');

表示服务器系统根目录中的home.php文件。

<强>解决方案

在向PHP指示Web文件时,避免输入整个Web目录结构的最简单(IMHO)方法是使用$_SERVER['DOCUMENT_ROOT']变量。这会查询Apache以查找Web目录根目录的路径,并且您可以添加文件路径的其余部分,就像您正在与Apache交谈一样。例如:

header('Location:'.$_SERVER['DOCUMENT_ROOT'].'/home.php');
PHP将

理解为/var/www/example.com/public_html/home.php

答案 1 :(得分:0)

/ application不存在,您想要的实际文件夹是:

/var/www/example.com/public_html/application/config/development/dev_config.php

以/开头,告诉系统查看文件系统的根路径(例如/ var)。

application / config / development / dev_config.php工作的原因是你调用相对于当前文件夹的文件夹,因为你已经在public_html