我尝试在 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;
}
}
最后,重新启动nginx
并php-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 的测试中效果更好。