我在CentOS 7上运行Apache 2.4和PHP 7.我运行一个基于Web的文件服务器。目录结构如下所示:
/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致命错误:未捕获LogicException:根路径/ home / file-transfer-center不可读。
我检查了权限和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
很酷?
编辑:我的网络服务器以用户apache
运行,/home/file-transfer-center
目录由apache
拥有:
drwxrwxr-x. 2 apache wheel 60K Jan 11 17:12 file-transfer-center
答案 0 :(得分:1)
我相信您的* nix文件系统并不关心您拥有多少实际硬盘。所有文件都统一为单个文件系统。
您不能只将文件或文件传输中心目录移动到/ home目录中。该目录,至少在我的系统上,由root拥有:
$ ls -dal /home
drwxr-xr-x 4 root root 4096 Apr 28 2016 /home
您需要sudo权限才能将任何文件或目录移动到/ home目录。
如果您刚刚将目录文件传输中心从/ var / www / file-transfer-center移动到/ home / file-transfer-center,我想这个目录仍然有它的相同的权限。但是,如果您创建了一个名为/ home / file-transfer-center的新目录并将内容和子目录复制到其中,则它可能由root:root拥有。我建议您使用以下命令检查/ home / file-transfer center的权限:
ls -dal /home/file-transfer-center
看看apache是否可以访问它。
您还应确保为Web服务器分配正确的权限。要找出Web服务器所在的服务器,请通过您的Web服务器访问此PHP脚本:
<?
passthru("whoami");
它应该输出您的Web服务器的用户名。该用户应具有对/ home / file-transfer-center目录的读取和/或写入权限。
编辑:
仔细观察OP,我发现在文件权限结束时有一段时间(。) - 显然这表示SELinux限制。 SELinux可以repr
。考虑将文件传输中心目录移回/ var / www / file-transfer-center - 你可以在那里安装第二个驱动器吗?