Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menyelesaikan ralat nginx php403
Penyelesaian ralat Nginx php403: 1. Ubah suai kebenaran fail atau dayakan selinux 2. Ubah suai php-fpm.conf dan tambah sambungan fail yang diperlukan 3. Ubah suai kandungan php.ini kepada "cgi.fix_pathinfo = 0"; 4. Mulakan semula php-fpm.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, PHP versi 8.1, komputer Dell G3.
Bagaimana untuk menyelesaikan ralat nginx php403?
nginx php 403 Cause Analysis
Masalah: Apabila mengakses tapak web yang dikonfigurasikan dalam
, mesej ralat muncul: Akses Ditolak (403)
Penyelesaian biasa:
1. Masalah kebenaran fail
Ia mungkin fail masalah kebenaran, tiada kebenaran baca.
Atau selinux tidak ditutup.
2. security.limit_extensions
Semak ralat log ralat nginx dan cari ralat berikut:
2016/07/07 10:20:13 [error] 17710#0: *2145 FastCGI sent in stderr: "Access to the script '/home/www/game/10313156.html' has been denied (see security.limi t_extensions)" while reading response header from......
Dari 5.3.9 Pada pada permulaan, PHP secara rasmi menambah konfigurasi "security.limit_extensions", yang secara lalai hanya membenarkan pelaksanaan fail dengan sambungan ".php", menyebabkan masalah jenis fail lain tidak disokong.
Penerangan rasmi:
; Limits the extensions of the main script FPM will allow to parse. This can ; prevent configuration mistakes on the web server side. You should only limit ; FPM to .php extensions to prevent malicious users to use other extensions to ; exectute php code. ; Note: set an empty value to allow all extensions. ; Default Value: .php ;security.limit_extensions = .php .php3 .php4 .php5
Ubah suai php-fpm.conf: (tambah sambungan fail yang diperlukan)
security.limit_extensions = .php .html .js .css .jpg .jpeg .gif .png .htm
3 .fix_pathinfo
Diakses melalui URL ini, ralat Acess dinafikan dipaparkan.
log ralat nginx:
2016/07/08 09:47:12 [error] 24297#0: *3348 FastCGI sent in stderr: "Access to the script '/home/www/home.php/game/qr' has been denied (see security.limit_extensions)" while reading response header......
Ubah suai php.ini: (cgi.fix_pathinfo lalai kepada 1)
cgi.fix_pathinfo = 1
Penerangan rasmi:
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo
Malah, cgi.fix_pathinfo = 1 akan menyebabkan kerentanan penghuraian jenis fail adalah disyorkan untuk menetapkan cgi.fix_pathinfo = 0.
( Pemahaman tentang kelemahan:
Apabila cgi.fix_pathinfo=1, laluan akses: /foo.jpg/file.php, jika fail file.php tidak wujud, php parser Akan cuba meneka fail yang ingin anda laksanakan dan lihat kembali sepanjang laluan Jika foo.jpg wujud dan mengandungi kod php, php parser akan melaksanakan foo.jpg Apabila cgi.fix_pathinfo=0 laluan dan menghentikan pemprosesan jika fail tidak ditemui ) tidak dapat berfungsi dengan baik.
4.
Tetapkan pada php.ini: open_basedir=/home:/tmp/:/proc/
Mulakan semula php-fpm
Apabila mengakses halaman web dan menekan ctrl F5 untuk memuat semula dengan kerap, ralat Access Denied akan dilaporkan. Akses Dinafikan hanya muncul sekali-sekala, bukan 403 sepanjang masa.
pengelogan ralat nginx:
2016/07/09 08:32:40 [error] 26954#0: *2127721 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/www/touch/web/index.php) is not within the allowed path(s): (/home/wwwroot:/tmp/:/proc/) in Unknown on line 0 PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Unable to open primary script: /home/www/touch/web/index.php (Permission denied)" while reading response header from upstream, client: 117.136.1.22, server: test.hjq.com, request: "GET /index.php?c=Zs&a=getcontent HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "test.hjq.com"Pembelajaran yang disyorkan: "
Tutorial Video PHP
"Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat nginx php403. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!