【问题标题】:Creating absolute path in PHP在 PHP 中创建绝对路径
【发布时间】:2015-05-17 11:17:00
【问题描述】:

我创建了一个 PHP 文件 url.php 并编写了这段代码 -

<?php
define("BASE_URL", "/geo15/" );
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . "geo15/" );
?>

我在多个页面中包含了 url.php 文件,但是当我浏览这些文件时,我收到以下错误消息:

警告:require_once(inc/url.php):打开流失败:没有这样的 第 1 行 C:\wamp\www\geo15\inc\header.php 中的文件或目录

但是当我将路径 C:\wamp\www\geo15\inc\header.php 粘贴到浏览器的 URL 栏中时,它会打开。

注意我正在使用 WAMP 服务器进行开发。

【问题讨论】:

  • 你的意思是define("BASE_URL", ".../geo15/" );
  • 不,常量 BASE_URL 工作正常,但 ROOT_PATH 不工作。我想为我的 header.php 文件创建一个绝对路径。
  • @Utkarsh Vishnoi 我浏览了您提供的链接,但无法获得。这是我目前在 url.php 文件中的代码 &lt;?php define("BASE_URL", "/geo15/" ); define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . "geo15/" ); ?&gt; 那么它应该是什么?

标签: php wamp wampserver


【解决方案1】:

DOCUMENT_ROOT 会输出类似“c:/wamp/www”的内容,所以你会在那里丢失一个 /。您当前的代码实际上会输出类似“c:/wamp/wwwgeo15/”的内容。

另外,请确保“geo15/”位于实际的 www 目录中,而不是别名中。如果它是别名,那么您肯定会得到一个断开的链接。此外,您可能会发现以下有用:

目录名($_SERVER['SCRIPT_FILENAME'])

  • 会输出类似“x:/path/to/the/current/executing/php/file”的内容。
  • $_SERVER['SCRIPT_FILENAME'] 会输出类似 'x:/path/to/the/current/executing/php/file/theCurrentRunningFile.php' 的内容。
  • 这对于查找需要包含、包含一次或需要的页面很有用。

目录名($_SERVER['PHP_SELF'])

  • 会输出类似“/myAliasDirectory/and/path/to/current/php/file”的内容。
  • $_SERVER['PHP_SELF'] 会输出类似 '/myAliasDirectory/and/path/to/current/php/file/theCurrentRunningFile.php' 的内容。
  • 这对于创建动态超链接很有用。

或者,如果您有很多子目录,您可能需要考虑使用“../”来指出当前目录之上的目录。因此,如果您的脚本是“/my/path/to/current/runningscript.php”并且您要包含的文件在“/include/this/file.php”中,那么包含它的正确方法是“include ('../../../../../include/this/file.php');".

而且.. 以“/”开头也会带您到根目录,或者实际上,它可以指向当前别名的根目录或硬盘驱动器的根目录,而不以斜杠开头会从运行脚本的当前目录开始。如果您在别名“/myAliasDirectory/”中工作,如果“file.php”位于“x:/file.php”中,则使用“include('/file.php')”中的 / 开始包含将起作用或“/myAliasDirectory/file.php”。所以是的,如果你这样做会很混乱,所以我只会推荐一半。

【讨论】:

    【解决方案2】:

    我使用这个代码(在 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';
    

    【讨论】:

    • 我收到此错误:Warning: include(C:\wamp\www\geo15\pages\bazi-analysis../../inc/header.php): failed to open stream: No such file or directory in C:\wamp\www\geo15\pages\bazi-analysis\3-years-bazi-analysis.php on line 1
    • @Crtvca 如果服务器操作系统是windows,则应使用反斜杠(` \ `)分隔目录,如果是Linux(Unix),则使用正斜杠(` / `)。显然你在windows中运行,所以你应该用反斜杠替换正斜杠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2013-11-30
    • 2020-04-25
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    相关资源
    最近更新 更多