Installing pecl and pear on OS X 10.11 El Capitan, macOS 10.12 Sierra, macOS 10.13 High Sierra (< 10.13.3)

PhpMacosPearPecl

Php 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionaxlotlView Question on Stackoverflow
Solution 1 - PhpPaul SchreiberView Answer on Stackoverflow
Solution 2 - PhpkenorbView Answer on Stackoverflow
Solution 3 - PhpSerhii SmirnovView Answer on Stackoverflow
Solution 4 - PhpDaniel FlippanceView Answer on Stackoverflow
Solution 5 - PhpxrepView Answer on Stackoverflow
Solution 6 - PhpdavidcondreyView Answer on Stackoverflow
Solution 7 - Phpuser3890355View Answer on Stackoverflow
Solution 8 - PhpMikeView Answer on Stackoverflow
Solution 9 - PhpNa'aman HirschfeldView Answer on Stackoverflow
Solution 10 - PhpYasirView Answer on Stackoverflow