大家好,又见面了,我是全栈君。
编译php
因为 pthreads
是需要开启线程安全的,默认是不开启的,所以需要重新进行编译
-
首先获取我们的configure配置
`php -i | grep configure`
-
下载 php : https://www.php.net/downloads.php
tar -zxvf php7.2.tar.gz cd php7.2
-
添加配置项开启多进程安全
'--enable-maintainer-zts' '--enable-pthreads'
执行
./configure '--prefix=/usr/local/php7.2' '--with-config-file-path=/usr/local/php7.2' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--enable-mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-iconv-dir' '--with-freetype-dir=/usr/local/freetype' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--with-curl=/usr/local/curl' '--enable-mbregex' '--enable-mbstring' '--enable-intl' '--with-mcrypt' '--enable-ftp' '--with-gd' '--enable-gd-native-ttf' '--with-openssl' '--with-mhash' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--with-gettext' '--disable-fileinfo' '--enable-opcache' '--enable-maintainer-zts' '--enable-pthreads'
make
make install
-
配置php全局
cp /usr/local/php7.2/bin/php* /usr/bin php -v 查看 php 版本 php -m 查看php配置加载项
-
php-fpm配置全局
cp /usr/local/php7.2/sbin/php-fpm /usr/local/sbin/php-fpm
-
开启php-fpm
`systemctl satrt php-fpm.service` 或者 `service start php-fpm` 获取 `sudo /usr/local/php7.2/sbin/php-fpm` chkconfig php-fpm on // 设置开机自启 : 域名站点自己配置, 建立一个输出phpinfo()文件即可
pthreads 下载
wget -c https://github.com/krakjoe/pthreads/archive/master.zip
或者
git clone https://github.com/krakjoe/pthread
进入到 pthreads
中后进行编译
`--with-php-config=/usr/local/php7.1/bin/php-config` 这是关联的php版本编译
phpize
./configure --with-php-config=/usr/local/php7.1/bin/php-config
make
make install
echo "extension=pthreads.so" >> /etc/php.ini 或者
echo "extension=pthreads.so" >> /usr/local/php7.2/php.ini
保持 /usr/local/php7.2/php.ini 和 /etc/php.ini 同步即可
存放 pthreads.so
我尝试过很多种方法,不止上面两种, 自己摸索一下也好
然后查看 php -m
是否加载 pthreads
官方文档: https://www.php.net/manual/zh/book.pthreads.php
相关的文章
php7 扩展安装pthread: https://blog.51cto.com/quietnight/1765370
PHP版本升级:从php7.1升级到php7.2 : https://my.oschina.net/wangyongtao/blog/1790863
相关的命令
systemctl restart php-fpm.service - 重启php-fpm
systemctl restart nginx.service - 重启nginx
netstat -nlpt | grep php-fpm - 查看php-fpm经常
php -i | grep configure - 获取相关的配置加载项
ssh root@ip 链接服务器
版本不一致问题的解决
在使用是发现 php -v
和 phpinfo
不一致的问题
分析: php -v
是有全局变量决定的,可以查看 /usr/local/php7.2/bin/
(这是我的php版本位置), bin
下有 php
和 phpize
phpinfo
是由php-fpm决定的,位置在 /usr/local/php7.2/sbin/php-fpm
要解决版本不一致,我们首先 find / -name php-fpm
(寻找php-fpm的位置)
默认加载的php-fpm一般位于 /usr/local/sbin
目录下,
我们执行当前版本的覆盖老版本, cp /usr/local/php7.2/sbin/php-fpm /usr/local/sbin/php-fpm
输入 php -ef | grep php
kill -9
进程号
然后 systemctl satrt php-fpm.service
或者 service start php-fpm
获取 sudo /usr/local/sbin/php-fpm
都可以,现在基本上就是你想要的版本咯
参考文章: https://blog.csdn.net/haif_city/article/details/81315372
总结
我感觉心态已经蹦了,总结了安装pthreads中有个错误要点,我是尝试学习php中的进程管理的, 所以才安装他, 但是在安装过程中,到了make的时候大多数时候报了错误。
尽量选择github最新版,pthreads 3.1.6
只支持 php7.2
, 注意。 我建议重新配置一台服务器重新开始编译php,并开启进程安全, 编译的时候增加 '--enable-maintainer-zts' '--enable-pthreads'
即可
当然,还是会出现各种各样的问题,因为有些问题,以为现在的水平我无法进行定位,例如全部安装完成,目录引用正确,按 照官方实例一模一样,可以使还是 `php -m`的时候没有显示加载, 对于这方面的原理性问题,我能力不足。
不过好处在于,重新学习了一下编译php、nginx配置设置等等,在服务器端之间进行操作,对个人的能力也有很大的提升吧。 也了解到了间接的了解到了cli 、fpm等一系列的原理性问题,虽然不多,但依旧是成长。 身边也没有好的擅长这方面的前辈,提问也没人回答,一切只能自己慢慢摸索了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111689.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...