Installing pecl and pear on OS X 10.11 El Capitan, macOS 10.12 Sierra, macOS 10.13 High Sierra (< 10.13.3)
PhpMacosPearPeclPhp Problem Overview
So it looks like the new 'System Integrity Protection' lockdown of /usr (among other directories) makes pear and pecl a non-starter. Has anyone found a workaround short of disabling it?
Php Solutions
Solution 1 - Php
There's a much easier way — no need to disable SIP or download your own copy:
sudo php /usr/lib/php/install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin
Solution 2 - Php
You shouldn't install binaries into system /usr
, use /usr/local
instead.
The pecl
and pear
commands should come along with PHP when installing via Homebrew.
Here is the example installing PHP with the latest Homebrew:
brew install php
or the specific version:
brew install php@7.1
brew install php@5.6
To find your pecl
and pear
commands, run:
find -L "$(brew --prefix php)" -name pecl -o -name pear
or:
find -L "$(brew --prefix php@7.1)" -name pecl -o -name pear
If you don't have it, consider uninstalling previous PHP version or run reinstall
instead.
You can also try to relink it by:
brew unlink php@7.1 && brew link php@7.1 --dry-run && brew link --overwrite --force php@7.1
Otherwise, link it manually:
ln -vs "$(find -L "$(brew --prefix [email protected])/bin" -name pecl)" /usr/local/bin
ln -vs "$(find -L "$(brew --prefix [email protected])/bin" -name pear)" /usr/local/bin
Alternatively download Pear it directly as a Phar package:
curl -o /usr/local/bin/pear http://pear.php.net/go-pear.phar
chmod +x /usr/local/bin/pear
or with this following one-liner (will work on Linux, but not on Unix):
curl -sL http://pear.php.net/go-pear.phar | sudo install -v -m755 /dev/stdin /usr/local/bin/pear
Solution 3 - Php
From this link: http://jason.pureconcepts.net/2012/10/install-pear-pecl-mac-os-x/ With this instructions, you don't need to disable 'System Integrity Protection'
> The following instructions install PEAR and PECL on Mac OS X under > /usr/local/. PECL is bundled with PEAR. So this is as simple as > installing PEAR on Mac OS X. > > PEAR is PHP’s Package Repository and makes it easy to download and > install PHP tools like PHPUnit and XDebug. I specifically recommend > these two for every PHP developer. > > ## Download PEAR > curl -O https://pear.php.net/go-pear.phar > sudo php -d detect_unicode=0 go-pear.phar > > ## Configure and Install PEAR > You should now be at a prompt to configure PEAR. > > 1. Type 1 and press return. > 1. Enter: > > /usr/local/pear > > 1. Type 4 and press return. > 1. Enter: > > /usr/local/bin > > 1. Press return > > ## Verify PEAR. > You should be able to type: > > pear version > > Eventually, if you use any extensions or applications from PEAR, you > may need to update PHP’s include path.
Solution 4 - Php
On Mohave I had to run the following commands - thanks go to https://tobschall.de/2018/08/07/pear-on-mojave/
cd /tmp
curl -s -O https://pear.php.net/install-pear-nozlib.phar
sudo php install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin
Solution 5 - Php
High Sierra setup:
- install Brew
- install PHP with Brew
There is preinstalled PEAR PACKAGE in
/usr/local/opt/php@<your_version>/bin
from there you can run
pecl install xdebug
and you should have working PHP binary with Xdebug.
Solution 6 - Php
This worked for me as of MacOS Sierra 10.12.1 for upgrading PHP, installing PEAR and V8
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
phpversion="$(php -v | tail -r | tail -n 1 | cut -d " " -f 2 | cut -c 1,3)"
brew unlink php$phpversion
brew install php71
brew install autoconf
curl -O http://pear.php.net/go-pear.phar
php -d detect_unicode=0 go-pear.phar
echo -e "\nexport PATH=$HOME/pear/bin:$PATH \n"
source ~/.bash_profile
echo -e "\ninclude_path = '.:/Users/YOURUSERNAME/pear/share/pear/' \nextension=v8js.so \n" >> /usr/local/etc/php/7.1/php.ini
git clone https://github.com/phpv8/v8js ~/tmp/v8js && cd $_
./configure CXXFLAGS="-Wno-c++11-narrowing"
make
make test
make install
sudo apachectl restart
Solution 7 - Php
Add suffix --with-pear
to install pear and pecl
See example below
brew install php --with-pear
brew reinstall php --with-pear
Solution 8 - Php
When brew is used and not linked, use:
brew install php@5.6
brew unlink php@5.6
$(brew --prefix php@5.6)/bin/pecl
$(brew --prefix php@5.6)/bin/pear
Solution 9 - Php
So for big sur:
brew install php
brew services start php
Solution 10 - Php
For macOS Mojave 10.14.4 just use /local instead of /usr when asked for "Installation base ($prefix)" location.