Я настраиваю сервер, на котором запущен nginx, и пытаюсь заставить его запускать скрипты php.
По-видимому, лучшая статья о том, как заставить nginx запускать php, это: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04
Следующее обсуждение заканчивается на этом, поскольку другие направления устаревают.
https://askubuntu.com/questions/134666/what-is-the-easiest-way-to-enable-php-on-nginx
Я следую инструкциям на веб-сайте цифрового океана, но ничего не меняется, я все еще не могу запустить php.
Я совершенно потерялся в этом, и любая помощь будет оценена по достоинству.
Вот вывод sudo service nginx status:
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-12-17 13:46:33 GMT; 55min ago
Process: 19056 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 19091 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
Process: 19064 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 19059 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 19066 (nginx)
Tasks: 2
Memory: 4.6M
CPU: 406ms
CGroup: /system.slice/nginx.service
├─19066 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
└─19094 nginx: worker process
Dec 17 13:46:33 websites systemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 17 13:46:33 websites systemd[1]: Started A high performance web server and a reverse proxy server.
Dec 17 13:48:53 websites systemd[1]: Reloading A high performance web server and a reverse proxy server.
Dec 17 13:48:53 websites systemd[1]: Reloaded A high performance web server and a reverse proxy server.
Вот результат php -v:
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
А вот файл конфигурации, который я использую.
Его в /etc/nginx/conf.d/virtual_servers.conf.
server {
listen 80;
server_name openage.org www.openage.org;
#listen [::]:80 default_server ipv6only=on;
#root /usr/share/nginx/html;
root /etc/nginx/html/openage;
index index.php index.html index.htm;
#server_name localhost;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/openage.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/openage.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Я уже:
-перезапущен php-fpm.
-перезапустил nginx.
-force перезагрузил кеш браузера с помощью ctrl-f5.
-checked / var / log / error на наличие ошибок, но, по-видимому, ошибок нет, когда я запускаю файл php. Это похоже на то, что nginx просто не понимает, что должен запускать php, а не просто обрабатывать его как обычный файл.
Я пытаюсь запустить скрипт, содержащий только функцию phpinfo (). Но вместо того, чтобы предоставить мне информацию о php, браузер просто предлагает мне загрузить файл. /:
Скрипт, который я запускаю, следующий:
hello
<?php phpinfo(); ?>
И вы можете увидеть это в действии здесь: https://openage.org. Как видите, никакой информации о php.
1-й выпуск: Вы назвали файл index.html
вместо того index.php
.
Этот блок местоположения location ~ \.php$ {
отправляет все, что заканчивается на .php, на php-fpm. Все, что заканчивается на .html, никогда не отправляется на php-fpm, поэтому встроенный код php не будет выполнен.
2-й выпуск: удалять try_files
директива из блока местоположения php.
try_files
сообщает nginx, что нужно искать этот файл и возвращать 404, если он не найден, прежде чем он передаст запрос в php-fpm.