PHP open_basedir이란 무엇입니까?

PHP open_basedir이란 무엇입니까?

Prestashop에서 스크립트를 실행할 때 NGINX 서버에서 이 오류가 발생했습니다. 이것은 NGINX 구성이나 뭐 그런 것으로 해결할 수 있다고 생각하는데, 어떻게 해야 할지 알려면 도움이 필요합니다.

Warning: file_exists(): open_basedir restriction in effect. 
File(/www/wwwroot/panel_ssl_site/../app/etc/env.php) is not within 
the allowed path(s): (/www/wwwroot/panel_ssl_site/) in
/www/wwwroot/panel_ssl_site/bridge_i15GpcsW.php on line 832
  • 이 문제를 어떻게 해결할 수 있나요?

감사해요,

페터

답변1

PHP open_basedir이란 무엇입니까?

이는 파일 자체를 포함하여 PHP가 액세스할 수 있는 파일을 지정된 디렉토리 트리로 제한합니다. 이 지시문영향을 받지 않습니다안전 모드가 켜져 있는지 꺼져 있는지에 따라.

스크립트가 include 또는 fopen()을 사용하여 파일 시스템에 액세스하려고 하면 파일 위치가 확인됩니다. 파일이 지정된 디렉토리 트리 외부에 있으면 PHP는 해당 파일에 대한 액세스를 거부합니다. 모든 기호 링크가 해결되므로 기호 링크를 사용하여 이러한 제한을 피할 수 없습니다. 파일이 존재하지 않으면 심볼릭 링크를 확인할 수 없으며 파일 이름이 (해결된) open_basedir과 비교됩니다.

open_basedir은 파일 시스템 기능 이상의 영향을 미칠 수 있습니다. 예를 들어 MySQL이 mysqlnd 드라이버를 사용하도록 구성된 경우 LOAD DATA INFILE은 open_basedir의 영향을 받습니다. PHP의 확장 기능 대부분은 이러한 방식으로 open_basedir을 사용합니다.

특별한 가치. 스크립트의 작업 디렉터리가 기본 디렉터리로 사용됨을 나타냅니다. 그러나 스크립트의 작업 디렉터리는 chdir()을 사용하여 쉽게 변경할 수 있으므로 약간 위험합니다.

httpd.conf에서 open_basedir은 "php_admin_value open_basedir none"을 사용하여 다른 구성 지시문과 동일한 방식으로 끌 수 있습니다(예: 일부 가상 호스트의 경우).

Windows에서는 세미콜론으로 디렉터리를 구분합니다. 다른 모든 시스템에서는 디렉터리를 콜론으로 구분합니다. Apache 모듈로서 이제 상위 디렉토리의 open_basedir 경로가 자동으로 상속됩니다.

open_basedir로 지정된 제한은 접두사가 아닌 디렉터리 이름입니다.

기본값은 모든 파일을 열 수 있도록 허용하는 것입니다.

참조 PHP.NET, 1

결론

open_basedir을 사용했으며 경로를 업데이트하지 않았습니다. 또한 귀하가 비즈니스 관련 환경을 사용하고 있지 않다는 증거가 있으므로 이 질문은 슈퍼유저에게 물어봐야 한다고 생각합니다.

php.ini (Debian 10)

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; http://php.net/open-basedir
;open_basedir =

위의 예는 일반적으로 php.net의 기본값이기도 한 Debian 10의 DEFAULT 설정입니다. 이는 당신이 그것을 변경했다는 것을 의미합니다수동으로. 또는 경로 이름에 "panel_ssl_site"가 포함되어 있기 때문에 귀하가 관리 패널을 사용하고 있다고 생각하고 이로 인해 이 질문이 주제와 관련이 없다고 생각합니다. 그러나 모든 관리자 패널도 이 설정을 변경할 수 있어야 합니다. 참조 관련 내용을 참조하세요.동일한 문제에 대한 StackOverflow

관련 정보