Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算PHP脚本根的URL?_Php - Fatal编程技术网

如何计算PHP脚本根的URL?

如何计算PHP脚本根的URL?,php,Php,我有以下网址: 我需要计算app_dev.php脚本的根URL。上述结果应为: 它将作为图像的基本路径,以使其路径成为绝对路径 我如何计算上述路径,并适应不同的设置、虚拟主机等 我希望这是有意义的!:) 简单到:$path=$\u服务器['HTTP\u主机']。目录名($\u服务器['PHP\u SELF']) 要获得成功,您必须这样做: $path = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) ? 'h

我有以下网址:

我需要计算app_dev.php脚本的根URL。上述结果应为:

它将作为图像的基本路径,以使其路径成为绝对路径

我如何计算上述路径,并适应不同的设置、虚拟主机等


我希望这是有意义的!:)

简单到:
$path=$\u服务器['HTTP\u主机']。目录名($\u服务器['PHP\u SELF'])

要获得成功,您必须这样做:

$path = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);'
这将产生如下结果:

http://localhost/mysite.loc/web/
https://localhost/mysite.loc/web/
这可能会给你你想要的。如果我正确地解释了您的问题,那么您可以执行以下操作:

$host='http://'。$\u服务器['http\u主机]

$dir=rtrim(dirname($\u SERVER['PHP\u SELF']),'/\\')


然后,
echo$host.$dir
应该为您提供基本路径,您可以向其中添加所需的任何路径

看起来这就是我需要的:

$url = strpos($_SERVER['SERVER_SIGNATURE'], '443') !== false ? 'https://' : 'http://';
$url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$split = preg_split('%/|\\\\%i', $_SERVER['SCRIPT_NAME']);
$url = preg_split("/{$split[count($split)-1]}/i", $url);

做了这个把戏,我现在只需要测试它。

假设你想在
app\u dev.php中使用它
非常简单:

$dir = dirname($_SERVER['PHP_SELF'])."/";

请注意,您不需要零件,这很愚蠢。

图像的绝对路径是个坏主意。您的映像将在服务器上生成一个新的请求,这将降低性能,而不仅仅是“命中”。如果是绝对必需的,只需在配置文件中写入基本url即可。@grunk您所说的“命中”是什么,以及它与“新请求”的区别是什么?@grunk每个路径在离开浏览器时都会变成绝对路径。你在说什么?我在想绝对uri会触发额外的dns查找,但是如果浏览器转换为相对绝对,应该没有区别。你的第一个答案是错误的。请编辑它,我将删除否决票。@Pekka:对于这个:“简单到:$\u SERVER[“SCRIPT\u NAME”];”@Pekka,这就是为什么我说:“你的第一个答案错了。请编辑它,我将删除否决票。”@Pekka,我不能。它说我的投票被阻止了,直到他编辑了答案。我没有立即取消它,我正在浏览其他问题…@Charlie-ah。修正了你的问题,现在应该可以了。