Использование веб-сервера nginx и php. nginx работает, я вижу «Добро пожаловать в nginx!» но я получаю «доступ запрещен» при попытке получить доступ к php-странице. Я также установил php-fastcgi.
Вот мой конфиг по умолчанию nginx:
# redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; }
Я активировал security.limit_extensions = .php .php3 .php4 .php5 .html
и listen = /var/run/php5-fpm.sock
в /etc/php-fpm.d/www.conf и cgi.fix_pathinfo = 0
в / и т.д. / php5 / FPM / php.ini
Я перезапустил nginx и php5-fpm.
Спасибо за помощь.
Сделайте это, когда у вас есть вторичное местоположение
location / { try_files $uri $uri/ =404; root /path/to/your/www; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Эти 2 параметра – волшебный соус:
fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Пожалуйста, проверьте файл fastcgi_params и соответствующим образом измените его на этот пост https://askubuntu.com/questions/164627/nginx-php-fpm-access-denied-error
Я решил проблему, используя вышеупомянутый метод.
Я знаю некоторые возможные сценарии, когда nginx и php не могут обращаться к файлам:
Скорее всего, процесс php-fpm
запускается пользователем, который не имеет разрешения на чтение в соответствующих файлах .php. Это дает простую ошибку Access denied.
Процесс nginx
не имеет прав на чтение и перемещение в root
каталоге, содержащем файлы сайтов. Это дает 403 Forbidden
error.
Процесс php-fpm
не может пройти абсолютный путь к root
каталогу. Это дает Ошибка File not found
.
Поскольку автор упоминает, что проблема возникает только при доступе к php-файлам, я бы сказал, что здесь применяется первый сценарий.
Я считаю, что nginx
запускается как один пользователь и php-fpm
как другой, только пользователь php-fpm
забыл предоставить доступ для чтения.