.png)
나는 최근에 업데이트한 내 웹사이트 중 하나에 대한 플러그인을 사용하고 있습니다. 업데이트한 이후로 플러그인의 magnalister.php를 열 때 항상 액세스 거부 메시지(오류 403)가 나타납니다. 새 .htaccess 파일을 이전 파일로 교체해도 문제가 없습니다. 파일 내용은 다음과 같습니다.
업데이트 전:
<Files magnalister.php>
Order Deny,Allow
Allow from all
</Files>
<Files magnaCallback.php>
Order Deny,Allow
Allow from all
</Files>
업데이트 후:
<Files magnalister.php>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Files>
<Files magnaCallback.php>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Files>
PHP 오류 로그에 다음이 표시됩니다.
[Wed Sep 12 00:25:05 2018] [access_compat:error] [pid 7437] [client ***] [host ***] AH01797: client denied by server configuration: /is/htdocs/***/www/testshop3/plugins/magnalister/magnalister.php
저는 Apache/2.4.10을 사용하고 있습니다.
업데이트 버전에서 403 오류가 발생하는 이유는 무엇인가요?
답변1
어디세요부정하다입장? 그게 문제인 것 같습니다. 나는 귀하가 Apache 구성의 다른 곳에서 "이전" Apache 2.2 지시문을 사용하여 액세스를 여전히 거부하고 있다고 생각하며 이것이 우선합니다.
귀하가 게시한 모든 지시문만허용하다액세스, 그래서다른 것구성에서 해당 파일에 대한 액세스를 거부하고 있습니다.
.htaccess
Apache 2.4의 mod_authz_core/host 모듈과 작동하도록 구성을 업데이트했습니다 . 그러나 Apache 2.4에서 구성의 다른 부분이 여전히 이전 Deny
지시문(Apache 2.4의 mod_access_compact 및 Apache 2.2의 mod_authz_host의 일부)을 사용하는 경우 이러한 "이전" 지시문이 의 "새로운" Apache 2.4 지시문보다 우선순위를 갖습니다 .htaccess
. 구성의 명백한 순서에도 불구하고 액세스는 여전히 거부됩니다.
에 언급된 바와 같이2.2에서 2.4로 업그레이드 중인 Apache 문서:
...이전 지시문과 새 지시문을 혼합하면 예상치 못한 결과가 발생할 수 있습니다. ... mod_access_compat 지시어가 mod_authz_host보다 우선하기 때문에 ...
따라서 구성의 다른 곳에서 액세스를 거부하기 위해 여전히 "이전" 지시문을 사용하고 있다면 동등한 Apache 2.4 지시문을 사용하도록 업데이트해야 합니다.
이는 Apache 2.4에서 예상하는 것처럼 mod_authz_core와 달리 mod_access_compact에 의해 발생하는 오류로 확인되는 것 같습니다.
[2018년 9월 12일 수 00:25:05] [access_compat:오류] [pid 7437] [클라이언트 ...] [호스트 ...] AH01797: 서버 구성에 의해 클라이언트가 거부되었습니다: /is/htdocs/.../www/testshop3/plugins/magnalister/magnalister.php
(곁에:Apache 2.4를 사용하고 있다고 말씀하셨습니다. 에서와 같이 Apache 2.2와의 하위 호환성을 유지해야 합니까 .htaccess
? 두 구성을 모두 유지하면 유지 관리가 더 어려워지고 오류가 발생하기 쉽습니다.)