Centos7 PHP的安装和配置

最近下了一个index.php,把它放在域名下,访问的时候,总是变成下载模式,不能正确显示。一查,原来是自己的服务器没有装PHP,尴尬。。

一、安装

1.1 yum源

1、由于linux的yum源不存在php7.x,所以我们要更改yum源:

#rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

2、yum查询安装php71w

yum search php71w

3、yum 安装php71w和各种拓展,选自己需要的即可

yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-fpm php71w-gd php71w-mbstring php71w-mysqlnd php71w-opcache php71w-pdo php71w-xml

1.2. 配置

配置php.ini (这一步不确定不做行不行)

vi /etc/php.ini 

按下esc进入命令模式,输入:/cgi.fix_pathinfo,按n

进行下一个查找,找到指定cgi.fix_pathinfo, 修改为=0;

配置www.conf(这一步决定了用什么用户来启动php-fpm,因为我的网址的文件夹放在sam用户下了,如果不改的话,没有文件夹读写权限)

vi /etc/php-fpm.d/www.conf

user = apache
group = apache

改为

user = sam
group = sam

前提是已经创建了sam用户和sam组。

1.3 环境变量修改(这一步没有做)

安装完成之后,#whereis php 可以看到php的安装目录。

vim vim /etc/profile

在末尾添加

PATH=$PATH:/usr/local/php/bin  //记得修改为自己php的安装路径
export PATH

:wq保存退出

运行该句指令使修改生效

source /etc/profile  

查到PHP版本信息

php -v 

查看已安装的模块

php -m

1.4 启动服务

systemctl start php-fpm.service
systemctl restart nginx

开机开启服务

systemctl enable php-fpm

1.5 修改nginx配置

查看nginx配置文件位置

nginx -t

找到以后,然后修改

vim /etc/nginx/conf.d/blog.conf
vim /etc/nginx/nginx.conf

将index后面的修改为:

index index.html index.php

注:这一步很重要,最开始以为自己设置了的,后来一查,发现Https那块没有设置这个index,所以一直报403 Forbidden 的错误。

添加

location ~ \.php$ {
      
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

注:这一步卡了好久,原因是这个location,只改了http的,没有改https。 最后通过 F12 – Network ,才知道自己的设定没有加进去

重新加载nginx配置:

systemctl restart nginx.service

1.6 测试

在自己的Nginx或Apache或自建的网页目录下新建index.php,编辑内容为

<?php  phpinfo(); ?>

然后在网页上输入192.169.x.x:80/index.php,如果能看到php信息页面说明你的Nginx或httpd安装成功,

二、讨论

2.1 安装与配置php以后,打开index.php,还是变成下载模式

原因一:

只修改了http的location,没有修改https的location,实际打开的是https,傻笑

原因二:

php-fpm监听的不是9000的端口, 通过netstat -lnp 查看一下 9000是否被php-fpm监听

Debug采用的措施:

curl -svo /dev/null 'http://127..0.0.1:9000/index.php'

2.2 将网页变成下载模式

location add_header

location {
	add_header Content-Disposition  "attachment;filename=index.php";
}

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn