按照 digitalocean 上的教程在 ubunte 上安装 Nginx+PHP+MYSQL 到最后一步 访问 http://ip/info.php , 无法出现 phpinfo 页面,求助!

2014-07-20 23:18:09 +08:00
 1dian01
笔记如下:
1. 更新源
sudo apt-get update
sudo apt-get upgrade
2. 安装 MySQL
sudo apt-get install mysql-server php5-mysql

sudo mysql_install_db
3. MySQL安全设置
sudo /usr/bin/mysql_secure_installation
系统提示输入MySQL的密码,并按照如下操作
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
4. 安装NGINX
sudo apt-get install nginx
安装成功后启动NGINX sudo service nginx start
然后在浏览器中输入IP地址检查NGINX是否启动
5. 安装PHP
sudo apt-get install php5-fpm
6. 配置PHP
修改/etc/php5/fpm/php.ini文件中的cgi.fix_pathinfo=0,把1改为0
**同时注意去掉这句话前面的分号 ;,不然这句话就没有工作,在后面配置NGINX时文件中会有一句话# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini**
7. 修改PHP监听方式
打开/etc/php5/fpm/pool.d/www.conf 把listen = 127.0.0.1:9000 修改为listen = /var/run/php5-fpm.sock
**fpm分为端口监听和unix socket监听方式,前者对应你的IP端口,后者对应文件路径,nginx配置一致才能解决问题! 包管理默认的PHP-FPM的配置在 /etc/php5/fpm/pool.d/www.conf 里面可以改监听方式,只要nginx和www.conf两者的设定相同就不会出问题 参考:[http://www.v2ex.com/t/89653] **

然后重启php-fpm
sudo service php5-fpm restart
8. 配置NGINX
打开/etc/nginx/sites-available/default修改下面的配置来开启PHP
#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;
---->去掉#,与/etc/php5/fpm/pool.d/www.conf一致即可
# fastcgi_index index.php;
---->去掉#
# include fastcgi_params;
---->去掉#
#}
---->去掉#

修改保存之后重启Nginx:
sudo service nginx restart

10. 测试PHP是否正常工作
创建一个简单的PHP文件phpinfo.php,放入/etc/nginx/sites-available/default中root所示位置 root /usr/share/nginx/www;中

内容为 <?php phpinfo(); ?>

访问 http://ip/info.php , 如果出现 phpinfo 页面,则大功告成。

最后这步无法访问info.php,马化腾127-702-26-92,求帮忙,谢谢
7189 次点击
所在节点    问与答
28 条回复
ooxxcc
2014-07-21 10:49:54 +08:00
%s,sock,socket,g
1dian01
2014-07-21 10:57:56 +08:00
@ooxxcc 下面是不是说这是一个bug?为啥不建议把listen.mode修改为0666,谢谢

It's indeed caused by a recent update of PHP that fixes this (security related) bug: https://bugs.php.net/bug.php?id=67060
Everyone who's running PHP >= 5.5.12 or >= 5.4.28 is affected.

It can only be fixed in PuPHPet by changing the listen.mode back to 0666 (not recommended) or making sure the correct user is using the socket.
This must be changed in the PuPHPet configuration.
coolicer
2014-07-21 11:02:21 +08:00
有这么难吗,我装下来都没有问题。
1dian01
2014-07-21 11:28:21 +08:00
@coolicer 真了不起!佩服!
lsylsy2
2014-07-21 11:33:00 +08:00
@1dian01 0666的话,本机上的所有用户都可以以这个用户的身份调用PHP,主要是在虚拟主机一样用户隔离的系统里面
举个例子:用户A写了个PHP,内容是ls /home/b,本来这个是执行不了的(没有权限),但是他把这个PHP发给了/var/run/userb/php.socket,于是就可以查看B的home了
BOOM
2014-07-21 11:40:22 +08:00
装个LNMP。或者直接把LNMP的代码拿来看看不就行。
hiths
2014-07-21 14:15:21 +08:00
我也是这个问题,sock监听http返回200,页面却是空白,端口就正常。
5dkgansm
2014-07-21 14:49:26 +08:00
@1dian01
不想折腾的话直接下phpstudy,有linux版本的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123644

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX