Nginx и служит.php файлы в виде загрузок, вместо их выполнения
Я устанавливаю веб-сайт в капле (цифровой океан). У меня есть проблема для установки NGINX с PHP правильно. Я сделал учебник https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 но когда я пытаюсь запустить некоторые .файл php это просто скачать...
например... http://5.101.99.123/info.php это работает, но... Если я пойду к главному http://5.101.99.123 он загружает мой индекс.php :/
есть идеи?
-rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php
-rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php
мой /etc/nginx / sites-доступно / по умолчанию
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name agitarycompartir.com;
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...
Другие" расположение " комментируются (#)
18 ответов:
попробуйте это:
Edit
/etc/nginx/sites-available/defaultраскомментируйте обе линии прослушивания, чтобы nginx прослушивал порт 80 IPv4 и IPv6.
listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6оставить
server_nameтолько# Make site accessible (...) server_name localhost;добавить
index.phpдоindexстрокаroot /usr/share/nginx/www; index index.php index.html index.htm;раскомментировать
location ~ \.php$ {}# pass the PHP scripts to FastCGI server listening on (...) # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }Edit
/etc/php5/fpm/php.iniи убедитсяcgi.fix_pathinfoустановлен к0перезагрузите nginx и php5-fpm (если вы не знаете, как это сделать, перезагрузите сервер)
я только начал использовать Linux неделю назад, так что я действительно надеюсь помочь вам в этом. Я использую текстовый редактор Nano для редактирования файлов. запустите apt-get install nano, если у вас его нет. Google на нем, чтобы узнать больше.
вам нужно добавить это в /etc/nginx/sites-enabled / default для выполнения php-файлов на сервере Nginx:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
У меня была аналогичная проблема, которая была решена путем очистка кэша браузера (также отлично работал с другим браузером).
обновить nginx config / etc/nginx/sites-доступно / по умолчанию или ваш файл конфигурации
Если вы используете php7 используйте это
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; }Если вы используете php5 используйте это
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }посетите здесь для получения полной информации здесь
у меня была такая же проблема и ни один из ответов решить проблему.
Я побежал:
sudo nginx -tчтобы проверить файл конфигурации в /etc/nginx/sites-available / default.
Он дал мне эти ошибки:
nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115 nginx: configuration file /etc/nginx/nginx.conf test failedпоэтому я зашел в конфигурационный файл и на последней строке там было
#}Я раскомментировал, снова запустил тестовую команду, и она сработала
это сработало для меня.
1) MyApp file
vi / etc/nginx/sites-available / myApp
server { listen 80; listen [::]:80; root /var/www/myApp; index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }пользователи PHP5
изменить
fastcgi_pass unix:/run/php/php7.0-fpm.sock;до
fastcgi_pass unix:/var/run/php5-fpm.sock;
2) Настройка cgi.fix_pathinfo
установить cgi.fix_pathinfo для 0
Location:
PHP5 / etc/php5/fpm / php.ini
PHP7 /etc/php/7.0/fpm / php.ini
3) перезапустите службы
FPM
php5
sudo service php5-fpm restartphp7
sudo service php7.0-fpm restartNGINX
sudo service nginx restart
Если какой-либо из предложенных ответов не работает, попробуйте следующее:
1.исправить ВСП.conf в etc/php5/fpm / pool.д:
listen = 127.0.0.1:9000;(delete all line contain listen= )2.исправить это nginx.conf в usr / local / nginx / conf:
remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.3. исправить файл по умолчанию в etc/nginx / site-available
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }4.перезапустите службу nginx
sudo service nginx restart
5.перезапустить php сервис
перезапуск службы php5-fpm
6.наслаждайтесь
создайте любой php файл в /usr/share/nginx/html и запустите в "имя_сервера / имя_файла.РНР" (имя_сервера зависит от вашей конфигурации,обычно это localhost, имя_файла.php-это имя файла, который создан в /usr/share/nginx / html ).
Я использую Ubuntu 14.04
ответ выше, казалось, комментировать слишком много для решения, которое я достиг. Вот как выглядел мой файл:
/etc/nginx/sites-available / default
location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }надеюсь, что это поможет некоторым людям, которые разочарованы в воскресенье днем (c:
для меня это помогло добавить
?$query_stringв конце /index.php, как показано ниже:location / { try_files $uri $uri/ /index.php?$query_string; }
мое решение было добавить
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;на мой пользовательский файл конфигурации, например
etc/nginx/sites-available/example.com.confдобавлять к
/etc/nginx/sites-available/defaultне работает для меня.
что работало для меня с Ubuntu 16.04, и php7 удалял эту строку
fastcgi_split_path_info ^(.+\.php)(/.+)$;после этого он перестал загружать php-файлы.
для тех, у кого есть такая же проблема с PHP 7, это то, что я сделал, чтобы nginx правильно выполнял php-файлы в CentOS 7, размещенные здесь, поэтому в случае, если у кого-то есть такая же проблема:
следуйте шаг за шагом этот документ на Цифровой Океан.
открыть
/etc/nginx/conf.d/default.conf(по умолчанию у меня нет сайтов-включен или сайты-доступны, вы можете редактировать соответственно).редактировать
locationпараметр as ниже:по умолчанию.conf:
location ~ \.php$ { try_files $uri =404; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #instruct nginx execute php7 files instead download them :D fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
перезапустить службы Nginx и PHP
sudo systemctl restart php-fpmиsudo systemctl restart nginx.последнее, но самое главное, очистить кэш браузера или работает в
incognito (Chrome)илиPrivate Browsing (Firefox)etc...надеюсь, что это полезно и удачи в кодировании
раскомментировать .расположение php в /etc/nginx/sites-доступно / по умолчанию
sudo vi / etc/nginx/sites-доступно / по умолчанию:
location ~ \.php$ { include snippets/fastcgi-php.conf; # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; }
Если что-то еще не поможет вам. И, возможно, ранее вы установили apache2 с информация.тестовый файл php. Просто очистите данные приложения (кэш,cookie) для localhost.
проверьте расширение файла конфигурации nginx *.конф.
например: /etc/nginx / conf.d / myfoo.confУ меня такая же ситуация. После того, как я переименую мой конфигурационный файл из myfoo в myfoo.конф, это исправлено. Не забудьте перезапустить nginx после переименования.
сначала надо
Remove cacheв браузерезатем откройте терминал и выполните следующую команду:
sudo apt-get install php-gettext sudo nano /etc/nginx/sites-available/defaultзатем добавьте следующий код в тег
defaultfile:server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; 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/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }если какое-либо несоответствие просто исправить и перезапустить Nginx с терминала по следующей команде
sudo systemctl перезапустить nginx
затем перейдите в браузер и наслаждайтесь ...
для меня это была линия: fastcgi_pass unix:/var/run/php5-fpm.носок;
, который должен был быть просто: fastcgi_pass unix:/run / php5-fpm.носок;
Я свой случай не использовал
/etc/nginx/sites-available/defaultя использовал другой файл конфигурации блока сервера (например example.com), и единственный способ, которым я смог исправить эту проблему, - это удалить символическую ссылку на файл конфигурации блока сервера по умолчанию:$ rm /etc/nginx/sites-enabled/defaultзатем перезагрузка Nginx:
$ sudo systemctl reload nginx
Comments