Я запускаю Apache 2.4 и PHP 7 на CentOS 7. Я запускаю веб-сервер файлов. Структура каталогов выглядит так:Как получить доступ ко второму диску от PHP?
/var/www/example.com/public_html # Document Root
/var/www/file-transfer-center/ # Location of files for file server
Все работает отлично, но раздел, в котором находятся эти файлы, заполняется. Существует еще один раздел на машине:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 953.8G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 953.3G 0 part
├─centos-root 253:0 0 50G 0 lvm/
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-home 253:2 0 899.2G 0 lvm /home
sdb 8:16 0 500G 0 disk
└─sdb1 8:17 0 500G 0 part
sdc 8:32 0 1000G 0 disk
└─sdc1 8:33 0 1000G 0 part
sr0 11:0 1 1024M 0 rom
И если я бегу df -aTh | grep centos
:
/dev/mapper/centos-root xfs 50G 17G 34G 34%/
/dev/mapper/centos-home xfs 899G 34G 866G 4% /home
Так это выглядит для меня, как я могу просто переместить мой file-transfer-center
каталог в /home
и я буду весь набор ,
Я скопировал файлы и изменил конфигурацию пути моего программного обеспечения передачи файлов на /home/file-transfer-center
, но когда я пытаюсь получить доступ к файлам, php-fpm
дает мне ошибку:
PHP Fatal error: Uncaught LogicException: The root path /home/file-transfer-center is not readable.
Я проверил разрешение и file-transfer-center
и все, если содержимое принадлежит apache
и в группе wheel
с правами 775 и 664 на каталоги и файлы, соответственно.
Я написал простой тест:
var_dump(fopen('/home/file-transfer-center/fa498800-4102-46be-a7a6-3384f242a949', 'r'));
И это приводит к false
. Если я заменю путь в этом тесте на исходный путь file-transfer-center
, это приведет к resource(5) of type (stream)
.
Я проверил open_basedir
, он не установлен. То же самое с user_dir
. Я не могу найти ничего, что могло бы указывать на то, что каталог будет не соответствовать PHP.
Что мне здесь не хватает? Правильно ли в моем анализе, что /home
работает на отдельном логическом разделе того же физического диска? Это связано с этим?
Как я могу прямо сказать PHP, что для доступа к /home/file-transfer-center
?
EDIT: Мой веб-сервер работает как пользователь apache
и каталог /home/file-transfer-center
принадлежит apache
:
drwxrwxr-x. 2 apache wheel 60K Jan 11 17:12 file-transfer-center
Можете ли вы 'su' пользователь apache и' cat' файл, который вы пытались открыть в php? Можете ли вы разместить точные разрешения '/ home/file-transfer-center' (самого каталога)? – ccKep
Apache запускается пользователем, а не вашим логином. Это либо «www», либо «www-data» или что-то похожее. Просто дайте этому пользователю или группе доступ к этому каталогу, и все готово. – Xorifelse
Работа PHP не связана с тем, где и как хранятся данные, управление разделами и дисками - это работа файловой системы. Пока диск монтируется там, где он должен и доступен с правильными разрешениями, PHP должен иметь возможность использовать его без проблем. – Havenard