感觉不妥

导航

 

记录一下 nginx + php 中 php 及扩展包的安装,以及使用中遇到的一些问题,把这个随笔作为一个更新的笔记吧,有问题就记录到这里来。

内容索引: ---> php7.3安装

                 ---> 1、在配置文件php.ini中修改 session.save_path 参数不生效的问题

                 ---> 2、session不刷新(页面有成功操作,但无法正常进行下一页面)

                 ---> 3、Apache无法解析PHP

                 ---> 4、为 Cookie 启用 HTTP Only 选项

 

安装

 

yum 安装php7.3

remi的源可以安装PHP

    ##安装remi的repo源
[root@localhost ~]# yum install epel-release yum-utils -y
[root@localhost ~]# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

    ##安装php73,需要的版本和各种扩展可以使用 yum search php* 进行搜索查看
    ##这里注意一下,PHP的扩展并不是约全面越好,要根据自己实际需要进行安装,当你以后需要的时候再去安装也可以,过多不需要的扩展可能会对性能产生影响
[root@localhost ~]# yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json \
> php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto \
> php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-pecl-swoole php73-php-recode php73-php-snmp php73-php-soap \
> php73-php-xml php73-php-yar php73-php-mysql php73-php-pecl-zip

    ##查看php安装版本信息
[root@localhost ~]# php73 -v
PHP 7.3.27 (cli) (built: Feb  2 2021 10:32:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.27, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.27, Copyright (c) 1999-2018, by Zend Technologies

    ##启动并查看运行状态,顺便设置一个开机自动启动
[root@localhost ~]# systemctl start php73-php-fpm
[root@localhost ~]# systemctl status php73-php-fpm
● php73-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php73-php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-03-28 21:34:21 CST; 4s ago
 Main PID: 5840 (php-fpm)
   Status: "Ready to handle connections"
    ......
[root@localhost ~]# systemctl enable php73-php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php73-php-fpm.service to /usr/lib/systemd/system/php73-php-fpm.service.

    ##写个php测试页看看信息,前提是安装了nginx或者apache
[root@localhost ~]# echo -e "<?php\n\tphpinfo()\n?>" > /usr/share/nginx/html/index.php

 

 


 

 

遇到的问题及解决办法:

 

1、在配置文件php.ini中修改 session.save_path 参数不生效的问题

  修改其他参数都有变化,但是修改 session.save_path 参数的时候却没有变化,查看了目录的权限和拥有者所属组,并没有给错;

  排查是不是有其他的配置文件覆盖了我们的参数设置,但是在 php.ini 中并没有相关的提示;

  但是在php73的安装目录下 find 查找 .conf 文件,发现还有一个 www.conf ,打开搜索,中就有 session.save_path 参数的设置,把他修改之后restart php73-php-fpm 和 nginx -s reload,查看 phpinfo ,已经生效;

[root@localhost ~]# cd /etc/opt/remi/php73/
[root@localhost php73]# find . -name "*\.conf"
./php-fpm.conf
./php-fpm.d/www.conf
    ##编辑文件,搜索是在配置文件的结尾几行处
[root@localhost php73]# vim php-fpm.d/www.conf
435 php_value[session.save_handler] = files
436 php_value[session.save_path]    = /var/opt/remi/php73/lib/php/session
437 php_value[soap.wsdl_cache_dir]  = /var/opt/remi/php73/lib/php/wsdlcache
438 ;php_value[opcache.file_cache]  = /var/opt/remi/php73/lib/php/opcache

    ##重启php73-fpm
[root@localhost php73]# systemctl restart php73-php-fpm

 注意:下次在修改服务参数的时候出现未报错却不生效的情况,可以在常规排查后加入多份配置文件生效覆盖的排查,知晓不同配置文件的作用以及生效顺序、优先级等。

 

 

2、session不刷新

  本人遇到的情况是开启nginx和php-fpm后,进入网站的页面登陆后登录成功,却不进行下一页面的跳转。

  需要注意的 php.ini 中 session.save_path 的设置,www.conf 中的 php_value[session.save_path] 设置;

  以及生成的session文件(默认是/var/lib/php/session下)的权限问题;

 

  这里有一个测试session是否刷新的代码;

  页面放到根目录即可,然后访问,初始是1,当F5刷新页面增加即正常,目前出现问题,则一直为1;

<?php
session_start();

$_SESSION['num'] += 1;

print_r($_SESSION);

 

  之后调整参数设置以及文件权限:

    ##修改session文件的权限,我使用得到是nginx,所以权限要给nginx用户的
    ##如果找不到,使用find查找,默认生成在 /var/lib/php/session 下
[root@localhost ~]# chown nginx:root /var/lib/php/session -R


    ##修改 php.ini 配置文件
[root@localhost ~]# vim /etc/opt/remi/php73/php.ini
    ... ...
session.save_path = /var/lib/php/session
    ... ...


    ##修改 www.conf 配置文件
[root@localhost ~]# vim /etc/opt/remi/php73/php-fpm.d/www.conf
    ... ...
php_value[session.save_path] = /var/lib/php/session
    ... ...

注意:和上一个问题类似,有的时候问题出现在配置文件关联包含上,记得要排查所有相关的配置文件,同时注意相关的文件权限问题,很多相关目录是需要写权限的。

 

 

3、Apache无法解析PHP

  当apache无法解析PHP文件时,请查看是否可以连接到php-fpm;

  这个问题出现在升级了php7.0版本,到php7.3,并且开启php-fpm;

  由于原来的apache配置并没有配置php-fpm的相关配置,所以要进行配置文件的调整;

    ##找到httpd中php-fpm的配置文件;
    ##php-fpm启动后,默认端口及地址为:127.0.0.1:9000,指向其即可
[root@localhost ~]# vim /etc/httpd/conf.modules.d/10-php-fpm.conf
    ... ...
<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
    ... ...

注意:其实配置 nginx 的配置文件时在 location 模块下会有 fastcgi_pass   127.0.0.1:9000; 的配置,就是配置php-fpm的监听地址及端口,只不过apache的配置位置并不是在其主配置文件中。

 

 

4、为 Cookie 启用 HTTP Only 选项

  开启 php.ini 的相关设置项:

    session.cookie_httponly = On

 

posted on 2021-03-28 22:08  感觉不妥  阅读(332)  评论(0编辑  收藏  举报