我正在编写绝对路径,以确保require_once
在所有包含的文件中按预期工作。
c:/ program files(x86)/ apache software foundation / apache2.2 / htdcos / photo_gallery
我尝试了这两个例子:
defined("SITE_ROOT")? null : defined("SITE_ROOT","C:".DS."Program Files (x86)".DS."apache software foundation".DS."apache2.2".DS."htdocs".DS."photo_gallery");
defined("SITE_ROOT")? null : defined("SITE_ROOT".DS."C:".DS."Program Files (x86)".DS."apache software foundation".DS."apache2.2".DS."htdocs".DS."photo_gallery");
答案 0 :(得分:1)
首先,不要在三元操作数内部使用赋值,特别是如果只有一个实际结果的话。单行很好,但它们不是实用性的缩影。
其次,正斜杠也适用于Windows:
if (!defined("SITE_ROOT")) {
define("SITE_ROOT", "C:/Program Files (x86)/apache software foundation/apache2.2/htdocs/photo_gallery");
}
答案 1 :(得分:0)
首先,您需要定义DS,因为未显示。
defined("DS")? null : define('DS', DIRECTORY_SEPARATOR);
defined("SITE_ROOT")? null : define("SITE_ROOT", $_SERVER['DOCUMENT_ROOT'] . DS. 'photo_gallery');
答案 2 :(得分:0)
您已经定义了“SITE_ROOT”
它在$ _SERVER ['DOCUMENT_ROOT']中,没有必要重新发明轮子。 根据您的需要简单地使用'DOCUMENT_ROOT'或'SCRIPT_FILENAME'连接:
$site_root = dirname($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR . 'subdirectory';
dirname用于删除可能出现的尾部斜杠:http://www.php.net/manual/en/reserved.variables.server.php#97351