php在DIRECTORY_SEPARATOR脚本上?

时间:2013-03-06 12:54:59

标签: php

我正在编写绝对路径,以确保require_once在所有包含的文件中按预期工作。 c:/ program files(x86)/ apache software foundation / apache2.2 / htdcos / photo_gallery

我尝试了这两个例子:

  1. defined("SITE_ROOT")? null : defined("SITE_ROOT","C:".DS."Program Files (x86)".DS."apache software foundation".DS."apache2.2".DS."htdocs".DS."photo_gallery");

  2. 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");

3 个答案:

答案 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