在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魔法常量。
答案 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);