在 PHP 中创建绝对路径
Creating absolute path in PHP
我创建了一个 PHP 文件 url.php 并编写了这段代码 -
<?php
define("BASE_URL", "/geo15/" );
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . "geo15/" );
?>
我已将 url.php 文件包含在多个页面中,但是当我浏览这些文件时,我收到此错误消息:
Warning: require_once(inc/url.php): failed to open stream: No such
file or directory in C:\wamp\www\geo15\inc\header.php on line 1
但是当我在浏览器的 URL 栏中粘贴路径 C:\wamp\www\geo15\inc\header.php 时,它会打开。
N.B。我正在使用 WAMP 服务器进行开发。
我使用这段代码(在 Unix 中):
include dirname(__FILE__).'/paht/relative/to/the/current/file/file_name.php';
它适用于所有情况。
在Windows中,您可以使用:
include dirname(__FILE__).'\paht\relative\to\the\current\file\file_name.php';
DOCUMENT_ROOT 会输出类似 "c:/wamp/www" 的内容,所以你会遗漏一个 / 那里。您当前的代码实际上会输出类似 "c:/wamp/wwwgeo15/".
的内容
此外,确保 'geo15/' 在实际的 www 目录中而不是别名中。如果它是一个别名,那么你肯定会得到一个损坏的 link。此外,您可能会发现以下内容很有用:
目录名($_SERVER['SCRIPT_FILENAME'])
- 会输出类似 'x:/path/to/the/current/executing/php/file'.
的内容
- $_SERVER['SCRIPT_FILENAME'] 会输出类似 'x:/path/to/the/current/executing/php/file/theCurrentRunningFile.php'.
的内容
- 这对于查找您需要包含、includeonce 或 require 的页面很有用。
目录名($_SERVER['PHP_SELF'])
- 会输出类似于“/myAliasDirectory/and/path/to/current/php/file”的内容。
- $_SERVER['PHP_SELF'] 会输出类似于 '/myAliasDirectory/and/path/to/current/php/file/theCurrentRunningFile.php'.
- 这对于创建动态 hyperlinks 很有用。
或者,如果您有很多子目录,您可能需要考虑使用“../”来指出当前目录之上的目录。所以,如果你的脚本是“/my/path/to/current/runningscript.php”而你要包含的文件在“/include/this/file.php”,那么正确的包含它的方法是"include('../../../../../include/this/file.php');".
并且..以“/”开头也会将您带到根目录,或者实际上,它可以指向当前别名的根目录或硬盘驱动器的根目录,而以“/”开头斜杠将从 运行 脚本的当前目录开始。如果您在别名“/myAliasDirectory/”中工作,如果 "file.php" 位于 "x:/file.php" 或“/myAliasDirectory/file] 中,那么在 "include('/file.php')" 中以 / 开始您的包含将起作用。 =58=]”。所以是的,如果你这样做会让人很困惑,所以我只推荐一半。
我创建了一个 PHP 文件 url.php 并编写了这段代码 -
<?php
define("BASE_URL", "/geo15/" );
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . "geo15/" );
?>
我已将 url.php 文件包含在多个页面中,但是当我浏览这些文件时,我收到此错误消息:
Warning: require_once(inc/url.php): failed to open stream: No such file or directory in C:\wamp\www\geo15\inc\header.php on line 1
但是当我在浏览器的 URL 栏中粘贴路径 C:\wamp\www\geo15\inc\header.php 时,它会打开。
N.B。我正在使用 WAMP 服务器进行开发。
我使用这段代码(在 Unix 中):
include dirname(__FILE__).'/paht/relative/to/the/current/file/file_name.php';
它适用于所有情况。
在Windows中,您可以使用:
include dirname(__FILE__).'\paht\relative\to\the\current\file\file_name.php';
DOCUMENT_ROOT 会输出类似 "c:/wamp/www" 的内容,所以你会遗漏一个 / 那里。您当前的代码实际上会输出类似 "c:/wamp/wwwgeo15/".
的内容此外,确保 'geo15/' 在实际的 www 目录中而不是别名中。如果它是一个别名,那么你肯定会得到一个损坏的 link。此外,您可能会发现以下内容很有用:
目录名($_SERVER['SCRIPT_FILENAME'])
- 会输出类似 'x:/path/to/the/current/executing/php/file'. 的内容
- $_SERVER['SCRIPT_FILENAME'] 会输出类似 'x:/path/to/the/current/executing/php/file/theCurrentRunningFile.php'. 的内容
- 这对于查找您需要包含、includeonce 或 require 的页面很有用。
目录名($_SERVER['PHP_SELF'])
- 会输出类似于“/myAliasDirectory/and/path/to/current/php/file”的内容。
- $_SERVER['PHP_SELF'] 会输出类似于 '/myAliasDirectory/and/path/to/current/php/file/theCurrentRunningFile.php'.
- 这对于创建动态 hyperlinks 很有用。
或者,如果您有很多子目录,您可能需要考虑使用“../”来指出当前目录之上的目录。所以,如果你的脚本是“/my/path/to/current/runningscript.php”而你要包含的文件在“/include/this/file.php”,那么正确的包含它的方法是"include('../../../../../include/this/file.php');".
并且..以“/”开头也会将您带到根目录,或者实际上,它可以指向当前别名的根目录或硬盘驱动器的根目录,而以“/”开头斜杠将从 运行 脚本的当前目录开始。如果您在别名“/myAliasDirectory/”中工作,如果 "file.php" 位于 "x:/file.php" 或“/myAliasDirectory/file] 中,那么在 "include('/file.php')" 中以 / 开始您的包含将起作用。 =58=]”。所以是的,如果你这样做会让人很困惑,所以我只推荐一半。