【发布时间】:2011-09-28 06:57:53
【问题描述】:
我目前在我的应用程序的配置文件中有以下内容:
define('DOCROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
define('WEBROOT', 'http://localhost/samples/');
第一行完美运行。我可以在任何地方包含配置文件,然后按预期使用DOCROOT 常量。
第二行也可以,但它是硬编码的,这意味着当我将此文件上传到我的网络服务器时,它会出错。应该是http://samples.example.com。有什么好的方法可以防止这种硬编码吗?我有点认为我必须在某个地方硬编码一些东西,在这种情况下,我能逃过什么,能逃过多少?
【问题讨论】:
-
我也对此感兴趣。我已经通过使用
$_SERVER['SERVER_NAME']在此期间解决了这个问题。但是,我读到并非所有服务器都支持相同的$_SERVER选项,所以我不确定它的便携性如何 -
$_SERVER['SERVER_NAME'] 并没有什么问题,它是少数几个真正可用的选项之一,除非您希望将信息手动写入文件或数据库,然后返回作为变量。另一种选择是将您的大部分 DOM 应用程序重新编写成另一种语言,例如 ASP.NET 或 JavaScript,这些语言实际上在所有当前安装中都提供了这些变量。仅在 JS 中编写此对象的问题只是 PHP 将在 JS 之前解析,因此这是不可行的。好吧,这就是我在编写了一些网络应用程序之后对这种情况的看法
标签: php web-applications path document-root