PHP - Получить URL файла из его пути, хранящегося в другой папке - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть проект в рамках YII, где я хочу, чтобы статический контент был доступен для разных сайтов.Предположим, у меня есть папка common, в которой я храню все изображения и документы в папке localhost, т.е. var/www/html.Теперь у меня есть две другие папки в localhost, то есть site1 и site2.Теперь я хочу использовать статическое содержимое папки common в site1 и site2.Я не могу создать абсолютный 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 голосов
/ 04 декабря 2018

Как правило, у вас не может быть 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...