PHP中包含文件的浏览器端路径

时间:2011-11-28 22:37:25

标签: php path

在PHP中,

  • $SERVER["PHP_SELF"]给出了被调用的URL的绝对“路径”部分;
  • __FILE__给出了包含的文件的绝对本地路径

因此:

/* /MyServer/stuff/include.php */
<?php echo $SERVER["PHP_SELF"] . PHP_EOL; echo __FILE__ . PHP_EOL; ?>

/* /MyServer/index.php */
<?php include("stuff/include.php");
      echo $SERVER["PHP_SELF"] . PHP_EOL; echo __FILE__ . PHP_EOL; ?>

当我继续http://www.example.com/index.php时,我会得到:

/index.php
/MyServer/stuff/include.php
/index.php
/MyServer/index.php

我的问题是:我如何获得“/stuff/include.php”,换句话说,我的包含文件的“http”页面?当然,我可以对它进行硬编码,或者通过编程方式对其进行推理,但我想要一个确定的方法。理想情况下,这是一些我不知道的PHP魔法常量。

2 个答案:

答案 0 :(得分:0)

硬编码(配置文件)变体是最好的选择。 没有&#34;魔法常数&#34;这会帮助你。

当您查看docs时,您可以选择提取脚本路径。但请注意,这些值取决于服务器配置/请求,因此您的确定了火灾方式&#34;可能会适得其反。

答案 1 :(得分:0)

试试这个:

$ protocol =(!empty($ _ SERVER ['HTTPS'])&amp;&amp; $ _SERVER ['HTTPS']!='off'|| $ _SERVER ['SERVER_PORT'] == 443)? 'https':'http';

$ url = $ protocol。 $ _SERVER ['HTTP_HOST']。 $ _SERVER [ 'REQUEST_URI'];

echo $ url;

$ arrUrl = parse_url($ protocol。$ _SERVER ['HTTP_HOST']。$ _SERVER ['REQUEST_URI']); 的print_r($ arrUrl);