我在如下文件夹中有一个 Silex PHP 站点:
/home/user/project/build-19434/
然后是 nginx 的符号链接
/usr/share/nginx/my.site/site -> /home/user/project/build-19434
我的网络根是
/usr/share/nginx/my.site/site/web
现在我有一个 php 类,它可以从中获取所有图像/home/user/project/build-19434/web/images/gallery/
并构建一个数组。后来我像这样转换这些路径,以便可以将它们放在<img>
标签中:
/home/user/project/build-19434/web/images/gallery/img1.jpg
/images/gallery/img1.jpg
这似乎不适用于符号链接,因为我正在执行以下操作:
public function pathToUrl($path)
{
$root = $this->request->server->get('DOCUMENT_ROOT'); // essentially $_SERVER['DOCUMENT_ROOT']
return str_ireplace($root, '', str_replace("\\", '/', $path));
}
我的图片来自这个目录(这是从与 web 不同的目录设置的)
$path = __DIR__.'/../../web/images/gallery';
但是我的 $_SERVER 变量使用/usr/share/nginx
路径,而我获取图像的脚本是相对于__DIR__
使用/home/user
路径的。请参阅下面的服务器阵列部分(请求画廊/照片页面时):
array(35) {
["USER"]=> string(5) "nginx"
["HOME"]=> string(14) "/var/lib/nginx"
["SCRIPT_NAME"]=> string(26) "/index.php//gallery/photos"
["REQUEST_URI"]=> string(15) "/gallery/photos"
["DOCUMENT_URI"]=> string(26) "/index.php//gallery/photos"
["DOCUMENT_ROOT"]=> string(39) "/usr/share/nginx/my.site/site/web"
["SCRIPT_FILENAME"]=> string(49) "/usr/share/nginx/my.site/site/web/index.php"
["ORIG_SCRIPT_FILENAME"]=> string(65) "/usr/share/nginx/my.site/site/web/index.php//gallery/photos"
["PATH_TRANSLATED"]=> string(39) "/usr/share/nginx/my.site/site/web"
["PHP_SELF"]=> string(26) "/index.php//gallery/photos"
}
如何将我的图像路径(可以按照描述进行符号链接)转换为 Web URL?我只需要存储__DIR__
并index.php
使用它作为我的根吗?
我更喜欢在我的 Windows 开发机器(没有符号链接,直接从 git 存储库中运行)和我的生产 Linux 机器(使用符号链接将项目更新到最新版本)上都可以使用的解决方案。