我一直在努力解决如何在我的ubuntu服务器中安装pthread以允许php线程化。 请帮帮我。
答案 0 :(得分:4)
以下说明将导致PHP的独立安装,但不会影响您当前的安装。
1)将PHP源签出到系统上的新目录
cd /usr/src
git clone https://github.com/php/php-src
cd php-src
1a)可选择签出特定版本的PHP
git checkout PHP-5.6
2)将pthreads源下载到构建目录(/ ext)
cd ext
git clone https://github.com/krakjoe/pthreads
cd ../
3)配置新的隔离PHP安装
./buildconf --force
./configure --prefix=/opt/php-zts \
--bindir=/opt/php-zts/bin \
--with-config-file-dir=/opt/php-zts \
--with-config-file-scan-dir=/opt/php-zts/modules.d/ \
--enable-pthreads=shared \
--with-curl=shared,/usr \
--with-zlib \
--with-libxml2 \
--enable-simplexml \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-gd-native-ttf \
--with-mysqli \
--enable-shared \
--enable-maintainer-zts \
--enable-sockets \
--with-curl=shared \
--enable-mbstring
make -j8
make install
echo "extension=pthreads.so" > /opt/php-zts/modules.d/pthreads.ini
此处使用的configure命令将导致相当标准的安装,并带有一组合理的模块。如果构建过程失败,您应该能够通过安装开发包来解决错误,例如,如果curl模块无法配置或构建那么
yum install curl-devel
或者系统的等效应该解决错误,允许继续构建。
4)将/ opt / php-zts / bin中的一些有用的东西符号链接到/ usr / local / bin
ln -s /opt/php-zts/bin/php /usr/local/bin/php-zts
ln -s /opt/php-zts/bin/phpize /usr/local/bin/phpize-zts
ln -s /opt/php-zts/bin/php-config /usr/local/bin/php-config-zts
ln -s /opt/php-zts/bin/php-cgi /usr/local/bin/php-cgi-zts
ln -s /opt/php-zts/bin/phpdbg /usr/local/bin/phpdbg-zts
此时,您可以安装PHP(所选分支的版本或主服务器,如果没有),并且可以使用pthreads。
构建模块的过程如下(例如APCu):
cd /usr/src
git clone https://github.com/krakjoe/acpu
cd apcu
phpize-zts
./configure --with-php-config=php-config-zts
make -j8
make install
echo "extension=apcu.so" > /opt/php-zts/modules.d/apcu.ini
在构建模块时,您必须确保传递正确的php-config路径,因为默认情况下将检测到PHP的系统安装。
所有blockquoted命令都适用于copypasta。