2

Я некоторое время пытался настроить сервер LEMP (Nginx, PHP, MySQL) в Arch Linux и пробовал несколько разных онлайн-руководств. Совсем недавно я пытался: http://www.adminempire.com/how-to-insta… mysql-php/.

Этот пункт просит меня создать отдельный файл php.conf в /etc /nginx / и добавить:

location ~ \.(php|html|htm)$ {
  try_files      $uri = 404;
  fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
  fastcgi_index  index.php;
  include        fastcgi.conf;
}

затем добавьте в /etc/nginx/nginx.conf, кроме класса сервера: include php.copf;

сначала я захожу на http://localhost , чтобы проверить, работает ли Nginx, а затем я проверяю http://localhost/phpinfo.php и получаю ошибку 404, я перезапустил nginx (без ошибок) и перезапустил php-fpm (я даже перезапустил свою систему). все еще получаю 404.

В учебнике сказано поместить файл phpinfo.php в файл /srv/http/phpinfo.php, но после просмотра nginx.conf я вижу:

location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
}

Поэтому я попытался в /usr/share/nginx/html/phpinfo.php, и все еще получаю 404

2 ответа2

4

В вашем каталоге /srv/http создайте файл phpinfo.php который содержит

<? phpinfo(); ?>

Затем измените ваш файл /etc/nginx/nginx.conf

server {
    listen       80;
    server_name  localhost;
    root         /srv/http;

    location / {
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include /etc/nginx/fastcgi.conf;
    }
}

Наконец, перезапустите nginx и php-fpm и попробуйте следующий URL http://localhost/phpinfo.php И это должно работать!

1

Что касается тестирования установки с помощью phpinfo() , я рекомендую использовать <?php для открывающей скобки, потому что <? может не всегда работать в зависимости от того, как ваш php настроен по умолчанию.

Убедитесь, что спецификатор 'root' находится непосредственно под 'server', как и под первым 'location' в конфигурации по умолчанию.

Мне также пришлось изменить значение /php/php.ini для спецификатора open_basedir чтобы включить путь к корню веб-сайта.

Это на Arch Linux с php 5.5.13-1, php-fpm 5.5.13-1 и nginx 1.6.0-4.

Мой конфиг nginx:

server {
    listen       80;

    server_name  sitename.domain;

    error_log    /var/log/nginx/error.log info;

    root   /srv/www/sitename;

    location / {
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        include        fastcgi.conf;
    }
}

Мой /etc/php/php.ini:

...
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/srv/www/
...

И при тестировании с веб-браузером, убедитесь, что не перезагружаете из кэша браузера каждый раз, когда вы пытаетесь перезагрузить URL-адрес к файлу php, иначе браузер будет думать, что ваш файл php является обычным хранимым ресурсом и будет пытаться сохранить это как обычная загрузка файлов. Это может произойти по умолчанию в Chrome/Chromium 34, если у вас не открыт DevTools и не включен параметр «Отключить кэш (когда DevTools открыт)». По моему опыту, Firefox 24.5 работал лучше для тестирования при включении php.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .