PHP Использование внешнего диска для загрузки файлов

У меня проблема с привязкой внешнего хранилища к домашнему каталогу 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";
  }
?>

результат: нет

Можете ли вы получить доступ к этим файлам вручную через консоль?

TimSch 08.10.2018 12:26

да, файлы доступны, и даже я могу скачать их прямо по ссылке.

APB 08.10.2018 12:30

Извините, кажется, я неправильно прочитал. Тогда поделитесь, пожалуйста, фрагментом кода, с которым вы его используете.

TimSch 08.10.2018 12:32

Я не думаю, что проблема заключается в функции, потому что все в порядке, когда я использую функции с основным путем к домашнему каталогу. file_exists ('/ cdn / files / file.mp4') или '/cdn/file.mp4'

APB 08.10.2018 12:36

Что ж, когда вы можете получить доступ к удаленно сохраненным файлам, ваш conf может работать хорошо. Поэтому я подозреваю, что ваш вызов функции вызывает проблемы.

TimSch 08.10.2018 12:51

Есть ли у пользователя, запускающего сценарий, разрешение на доступ к файлам?

TimSch 08.10.2018 12:52

да, пользователь и группа такие же, как основной домашний каталог, а также права доступа к каталогу.

APB 08.10.2018 13:02

Возможный дубликат stackoverflow.com/questions/6930150/…

TimSch 08.10.2018 13:34

ничего не меняется.

APB 08.10.2018 15:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
170
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключалась в значении 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>

Надеюсь, это будет кому-то полезно :)

Другие вопросы по теме