0

我正在编写绝对路径以确保require_once在我所有包含的文件中都能按预期工作。c:/程序文件(x86)/apache软件基础/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");

4

3 回答 3

1

首先,不要在三元操作数中使用赋值,尤其是在只有一个实际结果的情况下。单线很好,但它们不是实用性的缩影。

其次,正斜杠也适用于 Windows:

if (!defined("SITE_ROOT")) {
    define("SITE_ROOT", "C:/Program Files (x86)/apache software foundation/apache2.2/htdocs/photo_gallery");
}
于 2013-03-06T13:18:10.990 回答
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

于 2013-03-06T13:24:01.470 回答
0

首先,您需要定义 DS,因为它没有显示。

  defined("DS")? null : define('DS', DIRECTORY_SEPARATOR);
  defined("SITE_ROOT")? null : define("SITE_ROOT", $_SERVER['DOCUMENT_ROOT'] . DS. 'photo_gallery');
于 2013-03-06T13:21:15.517 回答