在Mac上,PHP包含文件的正确路径是什么?

3

我的电脑运行的是Mac OS X 10.5.8操作系统,预安装了PHP 5.2.11版本。我使用Coda 1.6.10进行编码。

我在写PHP文件,并通过文件而非服务器来预览它们。这一切都很顺利,直到我尝试使用PHP include功能时。相对路径无法正常工作,只能使用绝对路径从驱动器根目录开始。

是否有任何方法可以使用类似于

include_once "common/header.php";

这样的语句,而不必像这样指定整个文件路径:

include_once "/Volumes/Macintosh HD/Users/neil/Desktop/Website/ColoredLists_v1.0/common/base.php";

其中,ColoredLists_v1.0是包含所有网站文件的目录。我尝试过在文件路径前加上_SERVER[DOCUMENT_ROOT]或dirname(File),但是这些变量未被设置,因此无法正常工作。是否有简单的方法或配置可以更改,以便默认查找特定目录而不是驱动器根目录?目前,echo_include_path显示为.:

如果我在脚本开头添加以下行,则可以正常工作:

set_include_path('/Volumes/Macintosh HD/Users/neil/Desktop/Website/ColoredLists_v1.0');

但是,如果我想对所有脚本进行此操作,则无法使更改永久生效。即使我编辑了php.ini中的Unix include_path,它似乎也不起作用。

更新:最终,我决定最简单的方法是在本地运行Apache服务器。Mac预装了该服务器,因此没有遇到太多麻烦。我修改了httpd.conf文件,只允许来自本地主机的连接,从而缓解了我的安全担忧。当然,这仍然会打开端口80,但我在路由器后面,所以我希望我的风险不太大。Coda在“网站”功能中包含了一个很棒的特性,可以设置本地URL,因此现在工作得非常出色。唯一的缺点是,现在在代码编辑后,需要手动刷新预览。


你是指从“文件”而不是从服务器工作吗?使用命令行而不是 Apache? - zneak
是的@zneak。PHP文件只是通过PHP从文件中处理,然后在浏览器中呈现输出的HTML文件。请求不会发送到服务器,请求页面,然后返回呈现的HTML。因此,在这里没有htaccess或apache配置的问题。 - Neil
4个回答

2
你可以尝试这种方法。
require_once(dirname(__FILE__) . '/example.php');

0

尝试

set_include_path(
    '/Volumes/Macintosh HD/Users/neil/Desktop/Website/ColoredLists_v1.0' .
    PATH_SEPARATOR . 
    get_include_path());

在共享的包含文件中

或者编辑您的php.ini文件并更改include_path变量(我正在使用MAMP,因此无法告诉您php.ini的确切路径)


0

这确实是一个include_path问题。默认值似乎是.:/usr/lib/php; 也许如果您从包含脚本的目录启动PHP命令,就可以解决这个问题?


0
这是我每次都用的方法:

<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/common/header.php'); ?>


我认为任何$_SERVER变量都不会起作用,因为它是在命令行下运行PHP,而不是服务器。我不知道。我稍后还会尝试一下。 - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接