PHP pthreads extension
If you wish to have POSIX multi-threading you will need the pthreads extension (or the parallel extension for PHP 7.4+). To install the pthreads (https://pecl.php.net/package/pthreads) or parallel (https://pecl.php.net/package/parallel) extension using pecl
you are required to use a compiled version of PHP with the the thread safety support flag --enable-maintainer-zts
. Currently, the most clean way to do this would be to rebuild the original package with the proper flag.
Check what packages depend on the php package, for example:
pacman -Qii php
:: php-apache: requires php :: php-apcu: requires php :: php-pear: requires php
Remove all of them including 'php', for example:
pacman -R php php-apache php-apcu php-pear
Clone Arch Linux's official package repository:
cd /opt/ git clone https://github.com/archlinux/svntogit-packages.git cd packages/php/repos/extra-x86_64
Change the file named PKGBUILD
in this folder to add --enable-maintainer-zts
, next to the other extensions. It should look like:
... --with-xsl=shared \ --with-zip=shared \ --with-zlib \ --enable-maintainer-zts ...
Make the new packages (you may need to edit permissions before):
makepkg -s
Install the packages you removed:
pacman -U \ php-5.5.8-1-x86_64.pkg.tar.xz \ php-apache-5.5.8-1-x86_64.pkg.tar.xz \ php-pear-5.5.8-1-x86_64.pkg.tar.xz \
On some versions of PHP, php-pear
is missing and it is needed to run pecl
. As adding --with-pear
in the file above does not solve it, you will need to install it separately:
cd /opt/packages/ git clone https://aur.archlinux.org/packages/php-pear/ cd php-pear/ makepkg -i
Then install pthreads:
pecl install pthreads
or install parallel for recent PHP versions:
pecl install parallel
If you installed parallel, you will need to edit /etc/php/php.ini
and add the parallel
extension, it should look like:
... ;extension=odbc ;zend_extension=opcache extension=parallel ;extension=pdo_dblib ...
Install the 'apcu' package for APC support back
cd ../../../php-apcu/repos/extra-x86_64/ makepkg -si