不能包含或要求绝对路径

时间:2014-02-26 11:53:12

标签: php apache

服务器上的Apache版本:2.2.26

服务器上的PHP版本:5.5.9

我在一个文件夹中有一个名为admin_config.php的文件,其中.htaccess文件的值为Deny from ALL

index.phpDOCUMENT_ROOT)我试图将此文件包含在以下行中:

include '/core/config/admin_config.php'

在家里,这很好用。在我的云服务器上,这不起作用(没有错误消息)。如果我使用require代替,我会收到内部500错误。

如果我将线条更改为相对路径,则可以:

include 'core/config/admin_config.php'

为什么我不能在这里设置绝对路径?这是服务器上的一些错误,还是我的错误

1 个答案:

答案 0 :(得分:1)

您提供给includerequire的路径是本地文件系统上的路径。它们不是您在访问您网站的网址中看到的内容。以/开头的绝对路径来自文件系统的根。在Windows术语中,/fooC:\foo\。像foo/bar这样的相对路径是相对于PATH配置变量的,这取决于PATH的设置方式,其中还包括调用的PHP文件。

使用绝对路径通常不是一个好主意,因为这些路径可能在不同系统上有所不同(正如您所经历的那样)。在本地计算机上,该网站可能位于C:\core\...,但在服务器上,它将在/var/www/mysite/core/...中运行。使用PATH也很麻烦。最好的方法通常是使用__DIR____FILE__魔术常量来构造相对于当前文件的绝对路径(如果有意义的话):

require __DIR__ . '/some/folder/file.php`;

这包括相对于写入文件的文件some/folder/file.php