
아직 배우는 중이니 양해해 주시기 바랍니다.
Apache, php 및 mysql을 설치하고 일부 가상 호스트를 실행하고 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>
... 그리고 아파치를 다시 시작했지만 아무런 변화가 없었습니다. 여전히 같은 오류가 발생합니다.
그런 다음 0755로 변경했는데 /mcp/
, 제 생각에는 이 두 가지 변경 사항을 조합하여 문제가 해결된 것 같습니다.
답변1
디렉토리 아래의 코드를 변경해 보십시오. 다음과 같습니다.
<Directory /media/mcp/Vault/> Options -Indexes AllowOverride All Require all granted </Directory>
그것이 효과가 있기를 바랍니다.