Я устанавливаю веб-сайт в капельке (Digital Ocean). У меня есть проблема для правильной установки 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-available / default
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 }
… Прокомментированы другие «местоположение» (#)
Попробуй это:
Изменить / 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
Оставить только имя сервера
# Make site accessible (...) server_name localhost;
Добавьте index.php в индексную строку
root /usr/share/nginx/www; index index.php index.html index.htm;
Недопустимое местоположение ~ .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 неделю назад, поэтому я действительно надеюсь помочь вам в этом. Я использую текстовый редактор для редактирования файлов. запустите 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; } }
У меня была аналогичная проблема, которая была решена путем опустошения кеша браузера (также отлично работала с другим браузером).
У меня была такая же проблема, и ни один из ответов не разрешил проблему.
Я побежал:
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
Поэтому я вошел в конфигурационный файл и на последней строке был
#}
Я раскололся, снова запустил тестовую команду, и это сработало
Если какой-либо из предложенных ответов не работает, попробуйте следующее:
listen = 127.0.0.1:9000;(delete all line contain listen= )
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.
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
sudo service nginx restart
перезапуск службы php5-fpm
Создайте любой php-файл в / usr / share / nginx / html и запустите его в «server_name / file_name.php» (имя_сервера зависит от вашей конфигурации, normaly – localhost, file_name.php – имя файла, созданного в / usr / share / nginx / html).
Я использую Ubuntu 14.04
Обновите конфигурацию nginx / etc / nginx / sites-available / default или файл конфигурации
если вы используете 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; }
Посетите здесь подробную информацию Подробнее здесь
Ответ выше, казалось, слишком сильно прокомментировал решение, которое я достиг. Вот как выглядел мой файл:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
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:
Моим решением было добавить
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
не помогло мне.
Это работало для меня.
1) Файл MyApp
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
Место нахождения:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) Службы перезагрузки
FPM
php5 sudo service php5-fpm restart
php7 sudo service php7.0-fpm restart
NGINX
sudo service nginx restart
Что работало для меня с Ubuntu 16.04, а php7 удаляла эту строку
fastcgi_split_path_info ^(.+\.php)(/.+)$;
После этого он прекратил загрузку файлов php.
Для тех, кто имеет ту же проблему с PHP 7, это то, что я сделал для того, чтобы nginx корректно выполнял php-файлы в CentOS 7, размещенном здесь, чтобы в случае любой проблемы:
Выполните шаг за шагом этот документ в Digital Ocean .
Откройте /etc/nginx/conf.d/default.conf
(по умолчанию у меня нет сайтов и доступных сайтов, вы можете редактировать их соответственно).
Отредактируйте параметр location
как показано ниже:
default.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)
т. Д. …
Надеюсь, что это полезное и счастливое кодирование
Раскомментировать расположение .php в / etc / nginx / sites-available / default
sudo vi / etc / nginx / sites-available / default:
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 с тестовым файлом info.php. Просто очистите данные приложения (кеш, cookie) для localhost.
проверьте, что расширение файла конфигурации nginx равно * .conf.
например: /etc/nginx/conf.d/myfoo.conf
У меня такая же ситуация. После того, как я переименую свой файл конфигурации из myfoo в myfoo.conf, он исправлен. Не забудьте перезапустить nginx после его переименования.
Сначала вы должны
Remove cache
в своем браузере
Затем откройте терминал и выполните следующую команду:
sudo apt-get install php-gettext sudo nano /etc/nginx/sites-available/default
Затем добавьте следующий код в файл по 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 restart nginx
Затем перейдите в браузер и наслаждайтесь …
Для меня это помогло добавить ?$query_string
в конце /index.php, как показано ниже:
location / { try_files $uri $uri/ /index.php?$query_string; }