Saya mencoba menyiapkan server Ubuntu (12.04) yang baru diinstal, tetapi saya tidak bisa menjalankan file PHP melalui php-fpm. Apa pun yang saya lakukan, saya selalu mendapat "Akses ditolak." halaman (teks biasa, bukan html atau apa pun).
Paket yang diinstal:
nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm
Detail konfigurasi:
PHP-FPM:
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
Nginx:
user www-data;
worker_processes 3;
events { worker_connections 1024; }
Default / domain uji:
server {
listen 80;
server_name localhost;
root /extra/htdocs/default;
index index.html index.php
access_log /extra/logs/default/access.log;
error_log /extra/logs/default/error.log;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php
{
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
/extra/htdocs/default/index.php:
<?php
phpinfo();
Yang lainnya default. Baik log Nginx dan php-fpm tidak menunjukkan kesalahan. Namun ketika saya memuat http://<server-ip>/index.php
saya mendapatkan halaman "Akses ditolak".
Penyelesaian masalah:
- File index.html berfungsi dengan baik. Oleh karena itu harus berupa php-fpm, atau ikatan fastcgi antara Nginx dan php-fpm.
- Saya telah mengatur kepemilikan (baik pengguna dan grup) untuk seluruh
/extra
direktoriwww-data
, dan kepemilikan ke 777, hanya untuk memastikan (saya akan nada itu setelah berfungsi tentu saja). Jadi tentu saja itu bukan masalah izin - Ini bukan masalah security.limit_extensions yang saya lihat banyak: secara default yang diatur ke .php, yang persis seperti yang saya minta. Saya sudah mengaturnya secara eksplisit
.php .html
, dengan hasil yang sama.
Saya benar-benar bosan dengan ini, saya sudah menginstal pengaturan ini dua kali (meskipun pada mesin OSX), dan semuanya bekerja dengan sempurna. Apakah ada sesuatu yang saya abaikan?
Isi log:
Log kesalahan Nginx kosong.
Log akses nginx (menghapus ip):
<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"
log php-fpm:
[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections
chown
masalah.cgi.fix_pathinfo
diatur ke 0 (konfigurasi default) adalah masalahnya.cgi.fix_pathinfo = 0
direkomendasikan oleh banyak tutorial karena membantu mengurangi kerentanan, khususnya kerentanan yang mengeksekusi kode php melalui file sewenang-wenang. Jadi, jika Anda menetapkan ini ke 1, pastikan Anda tahu apa yang Anda lakukan atau tentukan mitigasi lain untuk menebusnya. Saya menemukan posting ini memiliki penjelasan yang baik tentang masalah ini: nealpoole.com/blog/2011/04/...