服务器上的Apache版本:2.2.26
服务器上的PHP版本:5.5.9
我在一个文件夹中有一个名为admin_config.php
的文件,其中.htaccess
文件的值为Deny from ALL
。
从index.php
(DOCUMENT_ROOT
)我试图将此文件包含在以下行中:
include '/core/config/admin_config.php'
在家里,这很好用。在我的云服务器上,这不起作用(没有错误消息)。如果我使用require
代替,我会收到内部500错误。
如果我将线条更改为相对路径,则可以:
include 'core/config/admin_config.php'
为什么我不能在这里设置绝对路径?这是服务器上的一些错误,还是我的错误
答案 0 :(得分:1)
您提供给include
或require
的路径是本地文件系统上的路径。它们不是您在访问您网站的网址中看到的内容。以/
开头的绝对路径来自文件系统的根。在Windows术语中,/foo
为C:\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
。