安装php5

在linux下安装PHP简直太容易了,一行命令搞定一切:

sudo apt-get -y install php5-common php5-cli php5-fpm

之后我们可以运行一下命令检查一下是否已经安装成功了:

php -v

安装nginx

如果你还米有安装nginx的话,请参考我的另外一篇博文在ubuntu下安装nginx

配置php5

我们需要修改一下fpm的配置文件:

sudo gedit /etc/php5/fpm/php.ini

找到cgi.fix_pathinfo=1这一行,然后把1改成0:

cgi.fix_pathinfo=0

cgi.fix_pathinfo=0 表示关闭 PHP 的自动 PATH_INFO 检测。cgi.fix_pathinfo=1的时候,举个例子,当nginx传给 PHP 的值为 /var/www/lrenwang/test.png/xxx.php的时候,$_SERVER 中 SCRIPT_FILENAME 却是 /var/www/test/test.png。

因为/var/www/lrenwang/test.png/xxx.php 并不存在,/var/www/lrenwang/test.png 被 PHP 解析为 SCRIPT_FILENAME,/xxx.php 被 PHP 解析为 PATH_INFO 后被丢弃,因此并没有在 $_SERVER 中出现。当cgi.fix_pathinfo设置为0的时候则不会有此问题。

另外,我们需要检查一下php5-fpm的配置,可能还需要一点小修改。打卡www.conf这个文件:

sudo gedit /etc/php5/fpm/pool.d/www.conf

找到listen = 127.0.0.1:9000, 把127.0.0.1:9000改成/var/run/php5-fpm.sock。

listen = /var/run/php5-fpm.sock

之后重启:

sudo service php5-fpm restart

NOTE:我这边安装完php-fpm后,这个listen地址就是正确的了。

另外,这里稍微提一下FastCGI的运作原理。Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作过程,如图所示:

配置nginx

打开默认站点配置文件:

sudo gedit /etc/nginx/sites-available/default

修改如下所示,你可以参开:

server {

listen 80;

root /usr/share/nginx/www;

index index.php index.html index.htm;

server_name example.com;

location / {

try_files $uri $uri/ /index.html;

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/www;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {

#fastcgi_pass 127.0.0.1:9000;

# With php5-fpm:

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

修改如下:

在index这一行添加index.php

修改server_name为你的域名或者IP

修改 “location ~ .php$ {“ 配置节

测试php页面

要测试nginx是否配置成功,我们可以新建一个PHP页面:

sudo touch /usr/share/nginx/www/info.php

sudo gedit /usr/share/nginx/www/info.php

输入以下PHP源代码:

phpinfo();

?>

重启nginx:

sudo service nginx restart

然后访问http://youripaddress/info.php这个页面查看结果

PS:其实后来我又在centos上安装了nginx和php,过程其实大同小异。LINUX果然是一法通万法通。

yum install php-common php-cli php-fpm

wget http://nginx.org/keys/nginx_signing.key

rpm --import nginx_signing.key

yum update

yum install nginx

之后的php配置其实和上文是一样的,只不过在centos下不会写php5-fpm.sock,而是写php-fpm.sock,即前缀是php而不是php5。

PS:这边其实还要注意一个问题,就是防火墙的问题。默认情况下,centos的防火墙并没有开放80端口,因此我们需要手工开放端口。

开放80端口:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

保存防火墙配置:

/etc/rc.d/init.d/iptables save

这样重启计算机后,CentOS防火墙默认已经开放了80端口。不过我们也可以在不重启系统的情况下重新加载防火墙配置:

/etc/init.d/iptables restart

我们可以通过以下命令查看CentOS防火墙信息:

/etc/init.d/iptables status

参考文档

让php来搞定一切!,ubuntu安装和配置php5相关推荐

  1. 10分钟搞定miniconda-python环境安装

    windows配置python环境 每次到一个新电脑就要安装环境,很多包安装起来很麻烦,下面对安装地址和常规使用包做了总结,一键安装所有包不用再一个一个找了!所有问题10分钟搞定! 1. 安装Mini ...

  2. ubuntu安装与配置,pytorch-gpu+cuda+cudnn+anaconda+pycharm

    ubuntu 安装与配置 安装过程 根据视频 配置启动盘 ,准备 空闲磁盘,注意: 机器学习尽量安装 18.04LTS 版本 根据上个视频进行安装,安装过程中磁盘分割步骤不要按照视频里的只分一个盘,而 ...

  3. ubuntu 安装、配置FTP

    ubuntu 安装.配置FTP 提示:ubuntu 16.0.4,不同版本操作可能稍有不同 前言 本文主要对服务器安装及配置FTP做一个记录,涉及安装.配置.创建FTP账号.以及第一次连接异常等. 提 ...

  4. Ubuntu安装与配置OpenNI2

    Ubuntu安装与配置OpenNI2 由于工作原因,需要在UbunTu上使用orbbec Astra s 摄像头.该摄像头是openni驱动的,所以需要安装OpenNI2. 安装openni2有两种方 ...

  5. Windows 10安装TensorFlow-gpu1.4 及CUDA8.0,cuDNN6.0,搞定了,包含安装方法和下载路径

    Windows 10安装TensorFlow-gpu1.4 及CUDA8.0,cuDNN6.0,搞定了 先说下我的最终版本: Python 3.5.3: tensorflow-gpu==1.4.0 : ...

  6. 两步搞定ubuntu18.04安装QQ,并实现屏幕共享,亲测

    腾讯官方不做linux版QQ,而是第三方deepin-wine做的. 第1步,下载和安装最新的deepin-wine环境: https://github.com/wszqkzqk/deepin-win ...

  7. Win10环境下的Ubuntu安装与配置

    目录 Ubuntu的安装与配置 WSL的安装 切换到root用户 工具安装 SSH配置 github配置SSH VS Code远程连接Ubuntu VS Code的安装 远程连接 VS Code配置L ...

  8. Linux手势控制软件,手势搞定一切 Ubuntu移动版操作系统上手玩

    离13.4版本的Ubuntu发布至少还有4个月,不过对于Linux爱好者来说,现在有另一个值得庆祝的事情--Ubuntu刚刚发布了移动版 Ubuntu操作系统,与Sailfish.BB10.Tizen ...

  9. 折腾3天没有搞定我家云安装Dietpi,求大神指点

    本来是被我正常安装使用了,手贱选错IP,把他又重新装了,然后一直都装不好了, 估计上次是狗屎运气 APT dist-upgrade │ - Command: apt-get -y dist-upgra ...

最新文章

  1. Unity 4.x 2D游戏开发基础教程大学霸第一更
  2. 多线程, 注入spring 服务
  3. MySQL 8.0新特性之原子DDL
  4. 21. 合并两个有序链表(C语言)
  5. 横线登记式明细分类账
  6. hdu 1047 Integer Inquiry
  7. 为什么Linux内核常用unsigned long来代替指针
  8. 前端工程师如何进行职业规划?
  9. lucene学习-3 - 代码重构
  10. python 实时取色器3.0(升级版)【内附源码】
  11. Bus Hound实用教程
  12. 用Python编游戏
  13. CorelDRAW X8最新版本安装使用教程
  14. 微软中国CEO梁念坚 : Windows Phone有四大优点
  15. java对象list_java 8 从一个list对象转list对象的属性
  16. CSDN产品周报第17期|首页推荐流支持快捷修改兴趣标签,问答支持展示gif
  17. R时间序列分析|SP500股指的ARIMA模型预测与残差ARCH效应分析
  18. solidworks装配体改为柔性_Y型钣金通风管道用SolidWorks怎么建模?溪风实战讲解
  19. 理论物理极础4:质点系
  20. Beagle填充之坑ERROR: REF field is not a sequence of A, C, T, G, or N characters at

热门文章

  1. jQuery cxSlide 焦点图轮换
  2. ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
  3. 正式发布 .Net2.0 大文件上传服务器控件
  4. 33_向路由组件传递数据
  5. No package 'glib-2.0' found
  6. 解决Azure中COULD NOT LOAD FILE OR ASSEMBLY问题
  7. Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法
  8. ue4打包问题的巧妙解决——二分回退大法!
  9. 推荐系统模型之: 基于层次表示自动聚合的 CVR 预估模型
  10. 【报告分享】2020年教育行业OMO模式转型现状研究报告.pdf(附下载链接)