由于我在localhost
上开发但部署在其他地方,并且由于我不想强迫我的站点位于Windows分区的根目录下(目前为F:web_devhtdocs),代码如下:
require_once($_SERVER['DOCUMENT_ROOT'] . '/projXY/database/database_common.php');
OdbcExec($sql); // defined in the file above
导致Netbeans发出"Warning: unknown function"。
现在,我可以通过使用如下目录结构来绕过这个问题:F:project_1
F:project_2
代替
F:web_dev_htdocsproject_1
F:web_dev_htdocsproject_2
,然后使用
require_once('/database/database_common.php');
BUT对最终用户安装我的站点的位置施加限制。
到目前为止最简单的是告诉NetBeans哪个本地目录对应于$_SERVER['DOCUMENT_ROOT']
,但我找不到配置选项。我相信这是一个普遍的问题。有什么建议吗?
更新:NetbBeans v7.0.1
只需将/path/to/projXY/database/
目录添加到项目的包含路径中。然后Netbeans将在那里拾取文件并将它们用作代码引用。
http://netbeans.org/kb/docs/php/project-setup.html phpIncludePath
附录
依靠$_SERVER['DOCUMENT_ROOT']
通常是一个坏主意。首先,它消除了通过控制台/命令行运行部分应用程序的能力。
你应该使用可配置的绝对路径来共享库,或者像Brandon的回答那样,使用__DIR__
(PHP 5.3)或dirname(__FILE__)
的相对路径
不确定这是否是您正在寻找的,但我通常使用:
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'file.php');