MAMP:如何升级PEAR

时间:2011-12-04 12:38:05

标签: macos osx-lion pear mamp

尝试升级MAMP时,会出现以下错误:

Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.

如何解决此问题的一些建议?

重现的步骤:

  • 已安装的MAMP(版本2.0.5)
  • cd /Applications/MAMP/bin/php/php5.3.6/bin
  • sudo ./pear upgrade pear
  • 抛出上述错误

更新(1):

根据回答8375349/420953我尝试了两种可能来解决这个问题

  • 答:删除 pear.conf
    • rm /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf
  • B:编辑 pear.conf
    • 将“php_dir”; s:44更改为“php_dir”; s: 43

两者都导致错误:

Could not get contents of package "/Applications/MAMP/bin/php/php5.3.6/bin/pear". Invalid tgz file.
upgrade failed

更新(2):

正在运行

  • 哪个梨

导致输出

  • 的/ usr / local / bin中/梨

有了这个,我注意到我使用的是PEAR的“本地”版本。

我用

删除了它
  • sudo pear uninstall pear

然后尝试用

升级MAMP版本的PEAR
  • /Applications/MAMP/bin/php/php5.3.6/bin/pear upgrade pear

这导致错误

Cannot install, php_dir for channel "pear.php.net" is not writeable by the current user

使用

进行升级
  • sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear upgrade pear

在本地安装(再次)。

正在运行

  • 哪个梨

输出

  • 的/ usr / local / bin中/梨

这让我回到更新(2)的起点。似乎我无法在MAMP目录下升级PEAR。

更新(3):

我发布了问题

因为我的假设是这个问题的根源与MAMP PEAR配置有关。

更新(4):

我没有安装本地PEAR版本,这导致了一些问题。在安装本地版本(而不仅仅是MAMP)版本之后,更新MAMP版本的工作也很完美。

4 个答案:

答案 0 :(得分:26)

有您确切问题的人似乎已在this MAMP forum thread中解决了这个问题。

您可以删除/Applications/MAMP/bin/php/php5.3.6/conf/pear.conf,也可以将该文件中的一行从"php_dir";s:44更改为"php_dir";s:43

答案 1 :(得分:4)

编辑pear.conf:添加正斜杠" /"到了php_dir路径的末尾,同时保持s:44解决了我和几个同事的问题。

答案 2 :(得分:2)

我安装了XAMPP,我刚刚删除了/xampp/php/pear.ini,解决了同样的问题

答案 3 :(得分:1)

只是为其他人找到这个答案而迟到了。我的PEAR配置有几个问题,而不仅仅是php_dir配置设置。

我必须检查所有设置以验证计数是否正确。当所有错误修复我的PEAR再次正常工作。

在终端中看到此消息:

Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.
  1. 转到您的PEAR配置文件(可能位于此处/MAMP/bin/php/php7.0.10/conf/pear.conf
  2. 转到该文件中的第276个字符,并验证字符串长度是否与字符串前面定义的s43匹配。
  3. 再次运行PEAR命令(例如pear version
  4. 如果您有更多错误,例如:第317个字符,你计算该字符串并在字符串前面的s:XX中写下长度。
  5. 只是为了澄清其他人发现这个问题。 PEAR Config文件是一个序列化对象,在运行命令时是非序列化的。

    序列化对象看起来像s:5:"value",其中s:5定义了字符串的长度。