
まだ勉強中ですので、どうかご容赦ください。
Apache、php、mysql をインストールし、いくつかの vhost を実行しています。certbot を使用してドメインを保護しましたが、すべて順調です。ドメインにアクセスしたり、スクリプトを実行したりできます。
/media/mcp/Vault
また、ext4 にフォーマットされ、 fstab の次のエントリを使用してマウントされている内部 RAID 1 アレイもあります。
/dev/disk/by-uuid/e80c874e-b7cf-4cd0-ab00-1b1a43b88516 /media/mcp/Vault auto nosuid,nodev,nofail,x-gvfs-show 0 0
問題のスクリプトは に存在し/var/www/domain.com/testwrite.php
、次のコードのみが含まれています。
<?php
$dir = '/media/mcp/Vault';
$files = scandir($dir);
print_r($files);
/media/
は によって所有されroot:root
、権限が与えられています0755
。/media/mcp/
所有者root:root
と権限は0750
/media/mcp/Vault/
所有者www-data:www-data
と権限は0777
しかし、そのスクリプトを実行すると、次のエラーが発生します。
Warning: scandir(/media/mcp/Vault): failed to open dir: Permission denied in /var/www/domain.com/testwrite.php on line 8
Warning: scandir(): (errno 13): Permission denied in /var/www/domain.com/testwrite.php on line 8
もちろん8行目です$files = scandir($dir);
。
編集:
/etc/apache/apache.conf
リンクされた質問に従って、以下を追加しました:
<Directory /media/mcp/Vault/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
... Apache を再起動しましたが、変化はなく、同じエラーが引き続き発生します。
その後、0755 に変更しました/mcp/
。そして、この 2 つの変更の組み合わせによって、問題が解決したと思います。
答え1
ディレクトリ下のコードを変更してみてください。次のようになります。
<Directory /media/mcp/Vault/> Options -Indexes AllowOverride All Require all granted </Directory>
うまくいくといいですね。