不能包含或需要绝对path

服务器上的Apache版本:2.2.26

服务器上的PHP版本:5.5.9

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

index.php (在DOCUMENT_ROOT )我试图用下面这行包含这个文件:

 include '/core/config/admin_config.php' 

在家里,这工作得很好。 在我的云服务器上,这不起作用(没有错误信息)。 如果我使用require ,我得到一个内部500错误。

如果我将行更改为相对path,它将起作用:

 include 'core/config/admin_config.php' 

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

您提供的路径includerequire本地文件系统上的路径。 他们不是你在URL中看到的访问你的网站。 以/开始的绝对路径来自文件系统的根目录。 在Windows中, /fooC:\foo\ 。 像foo/bar这样的相对路径是相对于PATH配置变量的,这取决于你的PATH是如何设置的,这也包括了哪个PHP文件被调用。

使用绝对路径通常不是一个好主意,因为在不同系统上可能会有所不同(正如您所遇到的那样)。 在您的本地机器上,该网站可能存在于C:\core\... ,但在服务器上它将运行在/var/www/mysite/core/...PATH也可能是繁琐的工作。 最好的方法是使用__DIR____FILE__魔术常量来构建相对于当前文件的绝对路径(如果这是__DIR__话):

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

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