Я устанавливаю сайт в капле (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
он загружает мой index.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.
Оставь в
server_name
покоеДобавить
index.php
вindex
строкуРаскоментируйте
location ~ \.php$ {}
Отредактируйте
/etc/php5/fpm/php.ini
и убедитесь, чтоcgi.fix_pathinfo
установлено0
Перезапустите nginx и php5-fpm.
sudo service nginx restart && sudo service php5-fpm restart
Я только начал использовать Linux неделю назад, поэтому я очень надеюсь помочь вам в этом. Я использую текстовый редактор Nano для редактирования файлов. запустите apt-get install nano, если у вас его нет. Google на это, чтобы узнать больше.
источник
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
преобразовать вunix:/var/run/php/php7.2-fpm.sock;
(еще одно вложение/php
)Вам нужно добавить это в / etc / nginx / sites-enabled / default для запуска файлов php на Nginx Server:
источник
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
а неphp7.0-fpm.sock
в/var/run/php/
то , что это значит?sudo service php7.0-fpm restart
, если sock отсутствует, это означает, что процесс php запущен./etc/nginx/conf.d/wordpress_https.conf
У меня была похожая проблема, которая была решена путем очистки кэша браузера (также отлично работал с другим браузером).
источник
Обновите конфигурацию nginx / etc / nginx / sites-available / default или ваш файл конфигурации
если вы используете php7 используйте это
если вы используете php5 используйте это
Посетите здесь для более подробной информации Подробнее здесь
источник
include snippets/fastcgi-php.conf;
?Я видел много решений выше, и многие из них работали правильно для меня, но я не понимал, что они делают, и боялся просто скопировать код, в частности, fastcgi . Так вот мои 2 цента,
Для некоторых серверов, таких как Apache, имеется встроенная поддержка для интерпретации PHP и, следовательно, нет необходимости в CGI.
Эта цифровая океанская ссылка довольно хорошо объясняет шаги по установке FPM, и я не пишу шаги, необходимые для решения проблемы загрузки php-файлов вместо рендеринга, так как остальные ответы ИМХО довольно хороши.
источник
У меня была та же самая проблема, и ни один из ответов не решил проблему.
Я побежал:
проверить файл конфигурации в / etc / nginx / sites-available / default.
Это дало мне эти ошибки:
Итак, я вошел в файл конфигурации и в последней строке было
Я раскомментировал, снова запустил тестовую команду, и она сработала
источник
Это сработало для меня.
1) файл MyApp
vi / etc / nginx / sites-available / myApp
Пользователи PHP5
+ Изменить
в
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
источник
Для меня это помогло добавить
?$query_string
в конец /index.php, как показано ниже:источник
Если какой-либо из предложенных ответов не работает, попробуйте это:
1.fix www.conf в etc / php5 / fpm / pool.d:
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
5.рестарт php сервис
6.Enjoy
Я использую Ubuntu 14.04
источник
Ответ выше, казалось, закомментировал слишком много для решения, которое я достиг. Вот как выглядел мой файл:
/ И т.д. / Nginx / сайты доступное / по умолчанию
Надеюсь, что это поможет некоторым людям, которые разочарованы в воскресенье днем (c:
источник
Вышеупомянутые фрагменты работали для меня в случае php7.2
источник
Для тех, у кого такая же проблема с PHP 7, это то, что я сделал, чтобы nginx правильно выполнял php-файлы в CentOS 7, опубликованные здесь, так что в случае, если у кого-то возникла такая же проблема:
Следуйте шаг за шагом этот документ на Digital Ocean .
Откройте
/etc/nginx/conf.d/default.conf
(по умолчанию у меня нет сайтов с включенным или доступных сайтов, вы можете редактировать соответственно).Отредактируйте
location
параметр, как показано ниже:default.conf :
Перезапустите службы Nginx и PHP
sudo systemctl restart php-fpm
иsudo systemctl restart nginx
.Последний, но самый важный, очистить кеш браузера или работает в
incognito (Chrome)
илиPrivate Browsing (Firefox)
т. Д ...Надеюсь, что это полезное и счастливое кодирование
источник
Мое решение было добавить
в мой пользовательский файл конфигурации, например
etc/nginx/sites-available/example.com.conf
Добавление к
/etc/nginx/sites-available/default
не работает для меня.источник
В моем случае, который я не использовал,
/etc/nginx/sites-available/default
я использовал другой файл конфигурации блока сервера (например, example.com), и единственный способ решить эту проблему - удалить символическую ссылку на файл конфигурации блока сервера по умолчанию:затем перезагрузите Nginx:
источник
Теперь я решил свою проблему с помощью этого кода (измените свой IP):
источник
Что работало для меня с Ubuntu 16.04, и php7 удалял эту строку
fastcgi_split_path_info ^(.+\.php)(/.+)$;
После этого перестал скачиваться php файл.
источник
Раскомментируйте расположение .php в / etc / nginx / sites-available / default
источник
Если что-то еще не поможет вам. А может быть, раньше вы установили apache2 с тестовым файлом info.php. Просто очистите данные приложения (кеш, cookie) для localhost.
источник
проверьте расширение вашего файла конфигурации nginx * .conf.
например: /etc/nginx/conf.d/myfoo.conf
У меня такая же ситуация. После того, как я переименовал мой конфигурационный файл из myfoo в myfoo.conf, он исправился. Не забудьте перезапустить nginx после переименования.
источник
Затем откройте терминал и выполните следующую команду:
Затем добавьте следующий код в
default
файл:В случае несоответствия просто исправьте и перезапустите Nginx с терминала следующей командой
Тогда зайдите в браузер и наслаждайтесь ...
источник
Для меня это была строка: fastcgi_pass unix: /var/run/php5-fpm.sock;
который должен был быть просто: fastcgi_pass unix: /run/php5-fpm.sock;
источник
Я собирался сойти с ума, пытаясь это исправить, для меня проблема заключалась в том, что Cloudflare кэшировал файл php и продолжал заставлять меня скачивать его.
Решением для меня было очистить кеш на Cloudflare.
источник
У меня была та же проблема, которая решила, что этот блок сервера также имеет этот блок над другими блоками местоположения, если у вас проблемы с загрузкой css. Который я добавил к своим файлам, доступным для сайтов.
источник
Так что это то, что в конечном итоге сработало в моем случае в качестве правил перезаписи, когда виновник
я изменил правила перезаписи nginx следующим образом:
становится ...
Очевидно, что без последнего ключевого слова запрос не был перезапущен, поэтому он никогда не попадал в
.php
сегмент местоположения и был просто интерпретирован как загрузка -источник
для записи, я обнаружил, что мой php-fpm не работает, и я исправил его
service php7.2-fpm stop
источник
Еще одна вещь, которую нужно проверить: если вы настроили доступ HTTPS перед настройкой PHP - я использовал certbot - вам нужно будет дважды внести изменения в / etc / nginx / sites-available / default потому что их будет два серверные блоки (одно прослушивание на порту 80 и одно прослушивание на порту 443).
(Я настраивал этот сервер в первую очередь для электронной почты и не имел никакого смысла для PHP, когда я впервые установил nginx просто для более простого запуска certbot.)
источник