Nginx php符号链接获取文档根
我在如下文件夹中有一个Silex PHP站点:Nginx php符号链接获取文档根,php,nginx,symlink,silex,Php,Nginx,Symlink,Silex,我在如下文件夹中有一个Silex PHP站点: /home/user/project/build-19434/ public function pathToUrl($path) { $root = $this->request->server->get('DOCUMENT_ROOT'); // essentially $_SERVER['DOCUMENT_ROOT'] return str_ireplace($root, '', str_replace("\\
/home/user/project/build-19434/
public function pathToUrl($path)
{
$root = $this->request->server->get('DOCUMENT_ROOT'); // essentially $_SERVER['DOCUMENT_ROOT']
return str_ireplace($root, '', str_replace("\\", '/', $path));
}
然后是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/
获取所有图像并构建一个数组。稍后,我会像这样变换这些路径,以便将它们放入
标记中:
/home/user/project/build-19434/web/images/gallery/img1.jpg
/images/gallery/img1.jpg
这似乎不适用于符号链接,因为我正在执行以下操作:
/home/user/project/build-19434/
public function pathToUrl($path)
{
$root = $this->request->server->get('DOCUMENT_ROOT'); // essentially $_SERVER['DOCUMENT_ROOT']
return str_ireplace($root, '', str_replace("\\", '/', $path));
}
我的图像来自此目录(此设置来自与web不同的目录)
但是我的$\u服务器变量使用/usr/share/nginx
路径,我获取图像的脚本是相对于\uuuuu DIR\uuuu
的,它使用/home/user
路径。请参见下面的服务器阵列部分(请求“多媒体资料/照片”页面时):
我如何将我的图像路径(可以如上所述进行符号链接)转换为web URL?我是否只需要将\uuu DIR\uu
存储在index.php
中,并将其用作我的根目录
我更喜欢在我的Windows开发机器上(没有符号链接,只是直接从git repo中运行)和在我的生产Linux机器上(使用符号链接将项目更新到最新版本)工作的解决方案。我意识到我可能可以依赖
realpath
,因为我(应该)知道文档根存在。一个快速测试表明,这在我的Linux服务器上是可行的
public function pathToUrl($path)
{
$root = realpath($this->request->server->get('DOCUMENT_ROOT')); // essentially $_SERVER['DOCUMENT_ROOT']
return str_ireplace($root, '', str_replace("\\", '/', $path));
}
这个解决方案有什么问题吗
我还考虑基于
\uu DIR\uuu
存储web目录,然后对其进行规范化以删除。/
我认为最好重写nginx配置以指向/home
目录,而不是/usr
,应该可以解决您的问题并消除对symlink的需求,但我希望有一些固定的nginx配置(/usr/share/nginx…
)和多个应用程序版本(build-294a9、build-40ee等),这样我就可以轻松回滚或更新应用程序,而无需更改nginx配置。