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

10

58

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?

Hornbook answered 1/10, 2015 at 17:4 Comment(3)
In the end, I disabled it, did what I needed to do, then re-enabled it.Hornbook
How do you disable and renable it?Vergeboard
Here's a link to a Macworld article that describes how to enable and disable 'System Integrity Protection.' macworld.com/article/2986118/security/…Anthropophagy
S
65

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
Sluice answered 22/1, 2016 at 19:14 Comment(8)
Took a while to accept because I didn't need this again until I installed Sierra and borked my whole LAMP stack (again).Hornbook
This works great! But when I try to install an extension with sudo pecl install I get: ERROR: failed to write /usr/lib/php/extensions/... How can I get around this?Wryneck
John: try this #26585099Sluice
What is -d and -b? Are they keys for phar file of for PHP?Methoxychlor
Those are command-line flags specifying the path to (a) the PHP binary and (b) where pear should be installed.Sluice
This is not working with macOS High Sierra version 10.13.3 Could not open input file: /usr/lib/php/install-pear-nozlib.pharStriate
Also not working for Mohave: Could not open input file: /usr/lib/php/install-pear-nozlib.pharConnecticut
This should work 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/binTrochelminth
M
61

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 [email protected]
brew install [email protected]

To find your pecl and pear commands, run:

find -L "$(brew --prefix php)" -name pecl -o -name pear

or:

find -L "$(brew --prefix [email protected])" -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 [email protected] && brew link [email protected] --dry-run && brew link --overwrite --force [email protected]

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
Maidie answered 11/4, 2016 at 11:16 Comment(2)
@GregoryBell Thanks for a good catch. Installing PHP with --with-pear should install pear correctly (in /usr/local/opt/php56/bin/pear). Then brew link php56 will link its binary to /usr/local/bin/pear.Maidie
I had to use brew unlink php56 && brew link php56 --dry-run && brew link --overwrite [email protected] --force in order for it to work, I had an older php 5.5 install that had some conflicts.Blackwell
V
52

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.
  2. Enter:

    /usr/local/pear
    
  3. Type 4 and press return.

  4. Enter:

    /usr/local/bin
    
  5. 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.

Vote answered 30/12, 2015 at 20:0 Comment(0)
C
7

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
Connecticut answered 22/3, 2019 at 22:41 Comment(0)
A
1

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.

Actinozoan answered 15/4, 2018 at 11:42 Comment(1)
@frumbert I know it's probably really late but you can start script file from same folder using following syntax ./pecl install xdebug. I hope it can help someone.Bautista
L
0

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
Llama answered 9/12, 2016 at 23:45 Comment(0)
E
0

Add suffix --with-pear to install pear and pecl
See example below

brew install php --with-pear
brew reinstall php --with-pear
Egyptology answered 7/8, 2018 at 10:1 Comment(0)
H
0

When brew is used and not linked, use:

brew install [email protected]
brew unlink [email protected]

$(brew --prefix [email protected])/bin/pecl
$(brew --prefix [email protected])/bin/pear
Hyalite answered 20/9, 2018 at 19:20 Comment(0)
G
0

So for big sur:

brew install php

brew services start php
Geostatic answered 19/3, 2021 at 10:55 Comment(0)
G
-1

For macOS Mojave 10.14.4 just use /local instead of /usr when asked for "Installation base ($prefix)" location.

Gail answered 15/5, 2019 at 6:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.