У меня проблема с привязкой внешнего хранилища к домашнему каталогу PHP.
Я использую веб-сервер Litespeed на Linux Centos 6, и все работает нормально в моем домашнем каталоге пользователя.
Но я хочу создать балансировщик нагрузки между двумя моими жесткими дисками, чтобы лучше работать в часы пик.
Я использую конфигурации ниже в httpd.conf для создания псевдонима, и он хорошо работает, когда я пытаюсь загрузить файлы напрямую, например https://example.com/cdn/file.mp4
Alias /cdn/ "/cdn/files/"
<Directory "/cdn/files">
Options Indexes MultiViews
AllowOverride All
Require all granted
Allow from all
</Directory>
Но если я попытаюсь использовать путь в сценариях php, например, проверьте Файл существует, кажется, что я не могу.
Я установил своего домашнего пользователя и группу во внешних каталогах.
Любая идея ?!
Обновление 1: Я пробовал использовать символические ссылки из домашнего каталога во внешний и все равно безрезультатно.
Обновление 2: мой простой PHP-код:
<?php
if (file_exists('/cdn/files/file.mp4') || file_exists('/cdn/file.mp4') || file_exists('./cdn/file.mp4') || file_exists('./~cdn/file.mp4')){
echo "yes";
}else{
echo "no";
}
?>
результат: нет
да, файлы доступны, и даже я могу скачать их прямо по ссылке.
Извините, кажется, я неправильно прочитал. Тогда поделитесь, пожалуйста, фрагментом кода, с которым вы его используете.
Я не думаю, что проблема заключается в функции, потому что все в порядке, когда я использую функции с основным путем к домашнему каталогу. file_exists ('/ cdn / files / file.mp4') или '/cdn/file.mp4'
Что ж, когда вы можете получить доступ к удаленно сохраненным файлам, ваш conf может работать хорошо. Поэтому я подозреваю, что ваш вызов функции вызывает проблемы.
Есть ли у пользователя, запускающего сценарий, разрешение на доступ к файлам?
да, пользователь и группа такие же, как основной домашний каталог, а также права доступа к каталогу.
Возможный дубликат stackoverflow.com/questions/6930150/…
ничего не меняется.
Проблема заключалась в значении open_basedir php.ini. Я должен добавить полный путь к новому диску в значении open_basedir.
Также добавьте значение open_basedir в файл httpd.conf, как показано ниже:
<Directory "/home/user/public_html">
php_admin_value open_basedir /home/user/public_html/:/cdn/files
</Directory>
<VirtualHost myip:80>
<Directory "/home/user/public_html">
php_admin_value open_basedir /home/user/public_html/:/cdn/files
</Directory>
</VirtualHost>
<VirtualHost myip:443>
<Directory "/home/user/public_html">
php_admin_value open_basedir /home/user/public_html/:/cdn/files
</Directory>
</VirtualHost>
Надеюсь, это будет кому-то полезно :)
Можете ли вы получить доступ к этим файлам вручную через консоль?