CentOS 7でApache 2.4とPHP 7を実行しています。私はWebベースのファイルサーバーを実行しています。ディレクトリ構造は次のようになります。PHPから2番目のディスクドライブにアクセスするにはどうすればよいですか?
/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
私はちょうど/home
に私のfile-transfer-center
ディレクトリを移動することができますし、私はすべてのセットになるだろうようなので、それは私には見えます。
私は、ファイルをコピーして/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
が実行されているのを修正しましたか?それには関係がありますか?
どのように私は明示的にそれが/home/file-transfer-center
にアクセスするためにクールだとPHPを伝えることができますか?
EDIT:私のウェブサーバは、ユーザapache
として実行されていると/home/file-transfer-center
ディレクトリはapache
によって所有されて:
drwxrwxr-x. 2 apache wheel 60K Jan 11 17:12 file-transfer-center
あなたは 'Apacheのユーザーをsu'と'あなたがPHPで開くしようとしたファイルをcat'することはできますか? '/ home/file-transfer-center'(ディレクトリ自体)の正確なパーミッションを投稿できますか? – ccKep
Apacheは、ログインユーザーではなくユーザーによって実行されます。それは 'www'か' www-data'かsimularなものです。そのユーザーまたはグループにそのディレクトリへのアクセスを許可するだけで完了です。 – Xorifelse
データがどこにどのように格納されているかを気にするのはPHPの仕事ではなく、パーティションやディスクの管理はファイルシステムの仕事です。ディスクが適切なパーミッションでマウントされアクセス可能な場所にマウントされている限り、PHPは問題なく使用できるはずです。 – Havenard