我的网站在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>
答案 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