MAMP PEAR configuration is pointing to local directories

感情迁移 提交于 2019-12-19 03:58:39

问题


I am using MAMP 2.0.5 and I have an issue upgrading PEAR

  • MAMP: How to upgrade PEAR

The issue is that PEAR is always installed in the "local" PEAR directory instead of the MAMP PEAR directory.

My MAMP PEAR configuration is the following:

sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-show

Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    1
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /usr/local/bin
PEAR documentation directory   doc_dir          /usr/local/docs
PHP extension directory        ext_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20060613
PEAR directory                 php_dir          /usr/local/share/pear
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR configuration file        cfg_dir          /usr/local/cfg
directory
PEAR data directory            data_dir         /usr/local/data
PEAR Installer download        download_dir     /tmp/pear/install
directory
PHP CLI/CGI binary             php_bin          /Applications/MAMP/bin/php/php5.3.6/bin/php
php.ini location               php_ini          <not set>
--program-prefix passed to     php_prefix       <not set>
PHP's ./configure
--program-suffix passed to     php_suffix       <not set>
PHP's ./configure
PEAR Installer temp directory  temp_dir         /tmp/pear/install
PEAR test directory            test_dir         /usr/local/tests
PEAR www files directory       www_dir          /usr/local/www
Cache TimeToLive               cache_ttl        3600
Preferred Package State        preferred_state  stable
Unix file mask                 umask            22
Debug Log Level                verbose          1
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          /usr/local/bin/gpg
Signature Key Directory        sig_keydir       /Applications/MAMP/conf/php/php5.3.6/pearkeys
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         gpg
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /Users/udos/.pearrc
System Configuration File      Filename         /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf

My question(s):

  • Is it correct that MAMP is using "local" directories to install PEAR?
  • Could someone point out how a "correct" MAMP PEAR configuration should look like?

Some suggestions how to fix?

Update (1):

first I switched to MAMP bin dir

cd /Applications/MAMP/bin/php/php5.3.6/bin/

checked the content of the directory

ls -al
total 56080
drwxr-xr-x  10 udos  admin       340 Dec 26 11:40 .
drwxr-xr-x   7 udos  admin       238 Dec 10 14:09 ..
-rwxr-xr-x   1 udos  admin       924 Dec 26 11:40 pear
-rwxr-xr-x   1 udos  admin       945 Dec 26 11:40 peardev
-rwxr-xr-x   1 udos  admin       861 Dec 26 11:40 pecl
-rwxr-xr-x   1 udos  admin     14821 Dec 26 11:40 phar
-rwxr-xr-x   1 udos  admin     14821 Dec 26 11:40 phar.phar
-rwxr-xr-x   1 udos  admin  28652364 Dec 26 11:40 php
-rwxr-xr-x   1 udos  admin      3892 Dec 26 11:40 php-config
-rwxr-xr-x   1 udos  admin      4582 Dec 26 11:40 phpize

after applying the changes according willems answer my config looks like this

./pear config-show

Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    1
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /usr/local/bin
PEAR documentation directory   doc_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/doc/
PHP extension directory        ext_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20060613
PEAR directory                 php_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR configuration file        cfg_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/cfg
directory
PEAR data directory            data_dir         /Applications/MAMP/bin/php/php5.3.6/lib/php/data/
PEAR Installer download        download_dir     /tmp/pear/install
directory
PHP CLI/CGI binary             php_bin          /Applications/MAMP/bin/php/php5.3.6/bin/php
php.ini location               php_ini          <not set>
--program-prefix passed to     php_prefix       <not set>
PHP's ./configure
--program-suffix passed to     php_suffix       <not set>
PHP's ./configure
PEAR Installer temp directory  temp_dir         /tmp/pear/install
PEAR test directory            test_dir         /Applications/MAMP/bin/php/php5.3.6/lib/php/test/
PEAR www files directory       www_dir          /Applications/MAMP/bin/php/php5.3.6/lib/php/www
Cache TimeToLive               cache_ttl        3600
Preferred Package State        preferred_state  stable
Unix file mask                 umask            22
Debug Log Level                verbose          1
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          /usr/local/bin/gpg
Signature Key Directory        sig_keydir       /Applications/MAMP/conf/php/php5.3.6/pearkeys
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         gpg
PEAR username (for             username         <not set>
maintainers)
User Configuration File        Filename         /Users/udos/.pearrc
System Configuration File      Filename         /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf

running

./pear upgrade --force

updates PEAR displaying the following:

downloading Archive_Tar-1.3.8.tgz ...
Starting to download Archive_Tar-1.3.8.tgz (17,995 bytes)
......done: 17,995 bytes
downloading Console_Getopt-1.3.1.tgz ...
Starting to download Console_Getopt-1.3.1.tgz (4,471 bytes)
...done: 4,471 bytes
downloading PEAR-1.9.4.tgz ...
Starting to download PEAR-1.9.4.tgz (296,332 bytes)
...done: 296,332 bytes
downloading Structures_Graph-1.0.4.tgz ...
Starting to download Structures_Graph-1.0.4.tgz (30,318 bytes)
...done: 30,318 bytes
downloading XML_Util-1.2.1.tgz ...
Starting to download XML_Util-1.2.1.tgz (17,729 bytes)
...done: 17,729 bytes
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.8
upgrade ok: channel://pear.php.net/Console_Getopt-1.3.1
upgrade ok: channel://pear.php.net/Structures_Graph-1.0.4
upgrade ok: channel://pear.php.net/XML_Util-1.2.1
upgrade ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

check PEAR version generates the following error

AirTime:bin udos$ ./pear version
-bash: ./pear: No such file or directory

this looked strange, so I checked the content of bin dir

AirTime:bin udos$ ls -al
total 56056
drwxr-xr-x  7 udos  admin       238 Dec 26 11:48 .
drwxr-xr-x  7 udos  admin       238 Dec 10 14:09 ..
-rwxr-xr-x  1 udos  admin     14821 Dec 26 11:40 phar
-rwxr-xr-x  1 udos  admin     14821 Dec 26 11:40 phar.phar
-rwxr-xr-x  1 udos  admin  28652364 Dec 26 11:40 php
-rwxr-xr-x  1 udos  admin      3892 Dec 26 11:40 php-config
-rwxr-xr-x  1 udos  admin      4582 Dec 26 11:40 phpize

some files are missing:

  • pear
  • peardev
  • pecl

checking

AirTime:bin udos$ which pear
/usr/local/bin/pear

reveals that PEAR was installed locally (again)...

Some ideas how to fix?

Update (2):

I had to install PEAR locally. That fixed the issue.


回答1:


I did a bit of digging and this seems to resolve the php version issue:

sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set php_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set doc_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/doc/
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set data_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/data/
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set test_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/test/
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set www_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/www
sudo mkdir /Applications/MAMP/bin/php/php5.3.6/lib/php/www
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-show
sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set cfg_dir /Applications/MAMP/bin/php/php5.3.6/lib/php/cfg
sudo mkdir /Applications/MAMP/bin/php/php5.3.6/lib/php/cfg

Then just cd to /Applications/MAMP/bin/php/php5.3.6/bin and run ./pear upgrade --force

This will set all the config files in the .pearrc of your home directory, haven't looked into integrating them into the pear.conf in MAMP..

> cd /Applications/MAMP/bin/php/php5.3.6/bin
> ./pear version
PEAR Version: 1.9.4
PHP Version: 5.3.6
Zend Engine Version: 2.3.0
Running on: Darwin willem.local 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug  9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64



回答2:


If someone is having this problem, after having the exact problem, my solution was:

cd /usr

and create a local install in that directory

$ wget http://pear.php.net/go-pear.phar
$ <MAMP PHP PATH> -d detect_unicode=0 go-pear.phar



回答3:


You can use PEAR bundler:

http://github.com/c9s/Onion

you can just run:

 $ onion.phar -d bundle 

to install pear packages into local directory. (without root permission)




回答4:


For MAMP 2.0.5 with PEAR 1.9.2

I had the same problem and think I came across an easier or at least more obvious solution after some digging and frustration.

Use PEAR's config-set command to change the install directories like so:

pear config-set bin_dir /Applications/MAMP/bin/php/php5.3.6/bin

pear config-set docs_dir /Applications/MAMP/bin/php/php5.3.6/lib

Then continue down the line reassigning paths from local directories to the MAMP installation.

Now:

pear upgrade --force PEAR

That should give you an upgrade of your MAMP PEAR to 1.9.4.

I took a much more convoluted route trying to get PHPUnit working with MAMP that involved transplanting the install manually and later reassigning the config paths, but I think this solution should be sufficient.



来源:https://stackoverflow.com/questions/8482265/mamp-pear-configuration-is-pointing-to-local-directories

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!