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 ответов
попробуйте это:
редактировать
/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; }
редактировать
/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
Так я зашел в конфигурационный файл и на последней строке там было
#}
Я раскомментировал, снова запустил тестовую команду, и она сработала
этот workded для меня.
1) MyApp файл
vi / etc/nginx/сайты-доступно / 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;
to
fastcgi_pass unix:/var/run/php5-fpm.sock;
2) Настройка cgi.fix_pathinfo
установить cgi.fix_pathinfo для 0
расположение:
РНР5 файл /etc/php5 с/ФПМ/РНР.ini
PHP7 / etc/php/7.0/fpm / php.ini
3) перезапустите службы
FPM
рнр5 sudo service php5-fpm restart
php7 sudo service php7.0-fpm restart
nginx и
sudo service nginx restart
Если какой-либо из предложенных ответов не работает, попробуйте следующее:
1.исправить ВСП.Conf в файле/etc / php5 с/ФПМ/бассейн.д:
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 службы nginx перезапуск
5.перезапустите службу php
перезапуск службы php5-fpm
6.наслаждайтесь
создайте любой файл php в /usr/share/nginx/html и запустите в "имя_сервера / имя_файла.РНР" (имя_сервера зависит от вашей конфигурации,обычно это localhost, имя_файла.php-это имя файла, созданного в /usr/share/nginx / html ).
Я использую Ubuntu 14.04
ответ выше, казалось, комментировал слишком много для решения, которого я достиг. Вот как выглядел мой файл:
/etc/nginx/sites-доступно / по умолчанию
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
(по умолчанию у меня нет сайтов-включен или сайты-доступны, вы можете редактировать соответственно).редактировать
раскомментировать .расположение 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 *.conf.
например: /etc/nginx / conf.д/myfoo.conf
У меня такая же ситуация. После переименования файла конфигурации myfoo в myfoo.conf, она исправлена. Не забудьте перезапустить nginx после переименования.
сначала надо
Remove cache
в браузере
затем откройте терминал и выполните следующую команду:
sudo apt-get install php-gettext
sudo nano /etc/nginx/sites-available/default
затем добавьте следующий код в тег :
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