解决安装PHP 5.6.40版本途中坑坑洼洼

4 篇文章 0 订阅
1 篇文章 0 订阅

所见非所得,历练见真知

最近要代码迁移,TP框架要求PHP版本5.6,老板大方的给了一台1核2G服务器并大气的说,“拿去,随便玩”。我也是一口吃下了老板给的大度。

       说正题,这服务器里面内容挺全,nginx1.10,php5.4,mysql 5.6,redis 3.2,。其他的与项目无关的我就不多说了。其他的大致能满足,就是PHP版本低了些。我选择了重装了。

        随便找个路径下载软件 mkdir soft

cd soft
wget http://am1.php.net/distributions/php-5.6.40.tar.g

tar -zxvf php-5.6.40.tar.gz 
cd php-5.6.40

./configure --prefix=/usr/local/php  --with-curl=/usr/local/curl  --with-freetype-dir  --with-gd  --with-gettext  --with-iconv-dir  --with-kerberos  --with-libdir=lib64  --with-libxml-dir  --with-mysqli  --with-openssl  --with-pcre-regex  --with-pdo-mysql  --with-pdo-sqlite  --with-pear  --with-png-dir  --with-xmlrpc  --with-xsl  --with-zlib  --enable-fpm  --enable-bcmath  --enable-libxml  --enable-inline-optimization  --enable-mbregex  --enable-mbstring  --enable-opcache  --enable-pcntl  --enable-shmop  --enable-soap  --enable-sockets  --enable-sysvsem  --enable-xml  --enable-zip

make && make install

我以为很成功,没想到来了个芭比Q。

既来之则安之。一顿百度猛如虎,得来全部是痛苦

大部分说在Makefile找到 EXTRA_LIBS 行,在行末添加 ‘ -llber ‘ 保存退出再次make即可,可能不同症状吧,我是没成功,呵呵~

那就换一种!

php 5.5 collect2: ld returned 1 exit status - 陈俊武 - 博客园

这种靠谱点,口味对上了,

建立软链接

ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/

make ZEND_EXTRA_LIBS='-liconv'

make install

天灵灵,地灵灵~ 等待菊花开。

一切顺利,开始配置工作

配置php

 php.ini-production拥有较高的安全性设定,适合服务器上线运营当产品。一般修改php.ini-production为php.ini

cp php.ini-production  /usr/local/php/etc/php.ini

创建php-fpm.conf文件

cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf

网上还有一个www.conf,我是没找到,那就先不搞了。

好赖弄个自启动吧,毕竟要装的像一点

设置开机自动启动

vim /lib/systemd/system/php-fpm.service

​​​​​​​

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 MAINPIDExecStop=/bin/kill−SIGINTMAINPID

[Install]
WantedBy=multi-user.target
开启开机自动启动:
systemctl enable php-fpm.service

来,给各位大爷启动一下

service php-fpm restart

ps -ef | grep php


 不错,味道好极了,可是还没结束

php -v 

还是5.4版本,额。。。。。幻觉?双版本?

应该是双版本,但我喜欢看到的是5.6,古人云,凡事不求人,遇事找度娘。

她说修改profile配置文件,可以么?

好的~

export PATH=$PATH:$HOME/bin:/usr/local/php/bin

source /etc/profile

执行  php  -v,不行喔

她说,那重启下服务器?我:..... 听你的。

 重启服务器命令:shutdown -r now  (反正老板说随便玩)

重启后,  php -v 还是5.4!!!

她说,要不重启下httpd.

service httpd restart

唉,不想看结果。。。

她不死心,把原来版本位置文件删了!

cd /usr/bin/
rm -fr ./php
rm -fr ./php-cgi 
rm -fr phpize

php -v  果然有韧性!666

接下来就是运行项目了

配置域名、项目路径,访问了html 后缀文件,可以访问,但是,访问.php后缀的文件出现

 心态崩了啊!

网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白。

原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。

需要改动下配置文件fastcgi_params:

添加两行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO                $fastcgi_script_name;

不放心,重启下nginx

service nginx restart

终于可以访问了。

剩下的工作其实还没完

后续的出现了以下问题:

1、 thinkphp无法找到模块

解决:

include pathinfo.conf
pathinfo.conf内容:
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO       $path_info;
try_files $fastcgi_script_name =404;
再添加以下内容:
​​​​​​​location ~ \.php {  # 原来有个$符号的,度娘说不能有,就删了。
      #root html;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME /var/www/html/tanchishe/public$fastcgi_script_name;
      fastcgi_split_path_info  ^(.+\.php)(/.*)$;
      fastcgi_param PATH_INFO $fastcgi_path_info;
   }

 2、启动phpinfo查看发现少了php.ini路径

 解决:

strace /usr/local/php7/sbin/php-fpm -i 2>1.log

把/usr/local/php/etc/php.ini 复制到/usr/local/php/lib/

或者直接写个软连接:

ln -s /etc/php.ini /usr/local/php/lib/php.ini

重启下php-fpm

完成!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值