PHP-从存储在其他文件夹中的文件路径获取文件的URL

时间:2018-12-04 05:58:17

标签: php yii

我在YII框架中有一个项目,我希望将静态内容共享到不同的站点。假设我有一个文件夹common,其中所有图像和文档都存储在本地主机中,即var/www/html文件夹。现在,我在本地主机中还有另外两个文件夹,即site1site2。现在,我想同时使用commonsite1site2文件夹的静态内容。我无法生成图像文件的绝对URL。我正在使用下面的功能从文件路径获取URL,它不适用于当前场景。非常感谢您的帮助。

function FilePath2URL($file, $Protocol='http://', $addHost= false) { $host = $addHost ? $Protocol."".$_SERVER['HTTP_HOST']: ""; if(strtoupper(substr(PHP_OS,0,3))==='WIN'){ $file_p=str_replace('\\','/',$file); $file_p=str_replace($_SERVER['DOCUMENT_ROOT'],'',$file_p); $url= self::websiteDomain().DS.$file_p; } else { $url = $host.str_replace($_SERVER['DOCUMENT_ROOT'], '', $file); } return file_exists($file)?$url."?".filemtime($file):$url; }

谢谢!

1 个答案:

答案 0 :(得分:0)

通常,您不能拥有指向站点根目录外部文件夹的URL。如果您的服务器在Linux上运行,则应定义一个符号链接(ln命令),该符号链接指向位于site1和site2文件夹中的公用文件夹,例如:

ln -s /var/html/common /var/html/site1/common
ln -s /var/html/common /var/html/site2/common

,以便通过站点的虚拟“公共”子文件夹看到真实的“公共”文件夹。这样做,您可能需要管理权限,以允许站点程序读取站点根目录外部的真实“公用”文件夹(使用Apache,调整SELinux权限[如果SELinux处于活动状态]和php open_basedir限制,如果您的站点正在运行php)。