无法在 Arch Linux 上使用 PHP 设置 Nginx

无法在 Arch Linux 上使用 PHP 设置 Nginx

我尝试在 Arch Linux 上设置 LEMP 服务器(Nginx、PHP、MySQL)一段时间,并尝试了一些不同的在线教程。最近我尝试了:http://www.adminempire.com/how-to-insta…mysql-php/。

这个教程要求我在 /etc/nginx/ 中创建一个单独的 php.conf 文件并添加:

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中添加,在服务器类中:包括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

答案1

在您的/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;
    }
}

最后,重新启动nginxphp-fpm尝试以下 URL http://localhost/phpinfo.php ,它应该可以工作!

答案2

关于使用测试安装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/
...

在使用 Web 浏览器进行测试时,请确保每次尝试重新加载 php 文件的 URL 时都不要从浏览器缓存中重新加载,否则浏览器会一直认为您的 php 文件是普通存储资源,并会继续尝试将其保存为常规文件下载。除非您打开 DevTools 并启用“禁用缓存(当 DevTools 打开时)”设置,否则 Chrome/Chromium 34 上可能会默认发生这种情况。根据我的经验,Firefox 24.5 在启用 php 的测试中效果更好。

相关内容