(宝塔/CentOS7)php7.3安装pthreads扩展使用多线程

本文服务器环境为CentOS7.3+宝塔管理面板,记录一下折腾的过程。

重新编译PHP

宝塔面板安装的PHP7.3在编译安装时并没有加入–enable-maintainer-zts参数,也就是非线程安全版。所以第一步需要重新编译宝塔安装的PHP7.3。

如果此前你是采用快速安装的方式安装服务器上的 PHP ,请直接卸载 PHP ,然后重新安装 PHP ,选择编译安装。此时宝塔面板会自动获取编译安装版本的 php.sh ,这个时候可以直接去宝塔面板的任务列表里取消安装 PHP 的任务。(这一步的目的仅仅只是为了获取编译安装版本的 php.sh ,因为快速安装和编译安装使用的脚本是不一样的。)

php.sh 位于 /www/server/panel/install

找到 php.sh 里 Install_PHP_73() 函数的这几行

tar zxf src.tar.gz
mv php-${php_73} src
cd src
./configure --prefix=${php_setup_path} --with-config-file-path=${php_setup_path}/etc --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=${withOpenssl} --enable-mbregex --enable-mbstring --enable-intl --enable-pcntl --enable-ftp --with-gd --with-openssl=/usr/local/openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc  --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-sodium=/usr/local/libsodium

在./configure后的参数末尾加上 –enable-maintainer-zts,注意参数间用空格隔开。

在 php.sh 中可以发现有下面这样一段代码

所以使用下面的命令就可以使用我们修改过的 php.sh 安装PHP7.3了。

cd /www/server/panel/install
sh php.sh install 7.3

等待安装完成后,在面板里查看PHP7.3也已经成功安装完成了。

 

安装pthreads

cd ~
wget https://codeload.github.com/krakjoe/pthreads/zip/master
unzip master
cd pthreads-master/
/www/server/php/73/bin/phpize
./configure --with-php-config=/www/server/php/73/bin/php-config
make && make install

(注意这里面有个坑,不要在直接在宝塔面板中直接修改 php.ini 配置pthreads扩展,不然php-fpm会无法启动,因为pthreads v3版本只能运行在cli下)

通过如下命令查看ini文件位置:

php --ini

进入 php ini 文件的目录

cd /www/server/php/73/etc

复制一份cli的配置文件(命令行)

cp php.ini php-cli.ini

然后在 php-cli.ini 中追加pthreads扩展的配置

extension=pthreads.so

在宝塔中重启php服务,再执行以下命令,查看pthreads扩展是否已安装

php -m | grep pthreads

完成。

 

小结

1、在获取GitHub上pthread源码编译时并非从release页面中获取源码,而是使用这个URL获取:https://codeload.github.com/krakjoe/pthreads/zip/master,其实就是直接点击download zip得到的zip文件。

2、在编译完扩展后直接在宝塔面板中修改 php.ini 文件加入 extension=pthreads.so 后无法启动 php-fpm ,即使是重启服务器也一样,这点需要注意

 

 

 

 

 

评论

  1. 橱窗外的小孩
    Windows Chrome

    挺好的,点个赞

    2月前
    2020-6-08 10:31:03
    • keyboardman 博主
      Windows Chrome

      :-p

      2月前
      2020-6-11 7:28:58
  2. 橱窗外的小孩
    Windows Chrome

    你这背景不错,拿走了啊

    2月前
    2020-6-08 10:32:02
    • keyboardman 博主
      Windows Chrome

      OK

      2月前
      2020-6-11 7:29:36
  3. 橱窗外的小孩
    Windows Chrome

    –enable-maintainer-zts -> –enable-maintainer-zts

    2月前
    2020-6-08 11:46:57
    • keyboardman 博主
      Windows Chrome

      😛 目前还没试过,宝塔现在加编译参数的功能了

      2月前
      2020-6-11 7:31:04
  4. 菜鸟
    Windows Chrome

    请问一下,我最后php -m | grep pthreads输入完,显示了红色的pthreads。
    这样就安装成功了吗?
    但是我随便写了class 继承 Thread 却显示not found

    2月前
    2020-6-12 17:51:02
    • keyboardman 博主
      Windows Chrome

      是的,显示红色的pthreads就安装成功了。至于为什么会报not found我就不知道了。

      2月前
      2020-6-12 17:56:21
      • 菜鸟
        Windows Chrome

        我用phpinfo看了下,Loaded Configuration File的文件仍然是/www/server/php/73/etc/php.ini
        里面也没有看到pthread,挺奇怪的。
        不过我一开始安装php的操作是直接在编译参数里加了–enable-maintainer-zts,与您的方法有些出入

        2月前
        2020-6-13 9:49:36

发送评论 编辑评论


				
上一篇
下一篇