【问题标题】:PHP xmlrpc extension and MAMPPHP xmlrpc 扩展和 MAMP
【发布时间】:2011-01-03 03:29:44
【问题描述】:

我正在尝试让 xmlrpc 扩展在 MAMP (1.8.4) 中为 php5 工作。

我检查了安装的 PHP 5 版本:

$ /Applications/MAMP/bin/php5/bin/php -v
PHP 5.2.11 (cli) (built: Dec 12 2009 13:19:08) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

我下载了 PHP 5.2.11 源包,并为 xmlrpc 构建了一个共享库:

$ LIBS=-lresolv ./configure --prefix=/opt --with-xmlrpc=shared
$ make
$ ls modules
xmlrpc.a    xmlrpc.la   xmlrpc.so

我将这些文件复制到 MAMP 中:

$ cp modules/* /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/

我在ini文件中添加了扩展设置:

$ vi /Applications/MAMP/conf/php5/php.ini
  extension=xmlrpc.so

我重新启动了 MAMP:

$ ./bin/stop.sh
$ ./bin/start.sh

当我执行phpinfo 时,我发现对xmlrpc 的唯一引用位于 PHP 核心部分:

xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off

我正在尝试安装 Moodle,但它仍然告诉我 xmlrpc 扩展不可用。

我是 PHP 新手,所以如果有人能告诉我如何确认扩展是否可用,那就太好了,或者至少提供一些关于如何进一步调试的指示。

谢谢。

更新:我找到了 PHP 日志文件,其中包含以下条目:

[08-Jan-2010 23:37:52] PHP Warning:  PHP Startup: Unable to load dynamic \
    library '/Applications/MAMP/bin/php5/lib/php/extensions/ \
    no-debug-non-zts- 20060613/xmlrpc.so' - (null) in Unknown on line 0

【问题讨论】:

    标签: php mamp moodle


    【解决方案1】:

    您是否使用 moodle 网站上的 MAMP 捆绑包? http://download.moodle.org/download.php/macosx/Moodle4Mac-XAMPP-20.dmg 这个应该可以。

    PHP加载扩展失败的原因可能是架构类型引起的,PHP和它的扩展必须在CFLAG中使用相同的架构类型参数。

    我遇到了类似的问题,但我没有使用 MAMP,我使用静态链接编译 PHP,有时,Mac OS X 加载动态库时出现了奇怪的问题。

    【讨论】:

    • 我的机器上已经安装了 MAMP,所以想安装它。我对 CFLAGS 一无所知,但是有没有办法找出 CFLAG 用于构建 MAMP 附带的 PHP 版本? (也许我应该在 MAMP 列表中询问)。
    • 是的。我有 '/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xmlrpc.so:第 0 行的 Unknown 中的通用包装器中没有匹配的架构' 令人毛骨悚然的错误...您是如何解决的?
    • 对此有什么解决方案吗?我遇到了和你一样的问题:S
    • 我尝试使用此解决方案,但 PHP 给了我一个错误:“第 0 行未知的通用包装器中没有匹配的体系结构”。但我可以使用 tim st.clair 的编译扩展来完成这项工作。可以在这个链接下载,附在邮件后面:link 一个重要的细节是 MAMP 有很多 php.ini 文件,这让我不知道应该编辑哪个文件。就我而言,对我有用的是路径:/Applications/MAMP/conf/php5.3.27。希望对您有所帮助。
    【解决方案2】:

    这种方法对我有用:

    • 下载Moodle4Mac(Moodle是需要PHP和xmlrpc的软件,自带XAMPP);
    • 将 xmlrpc.so 从该包(我的位于 /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626 下)复制到 MAMP 的 PHP 扩展文件夹(我的是 /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/);
    • 已将extension=xmlrpc.so 添加到PHP.INI

    重新启动 MAMP,就是这样。希望能帮助到你! :-)

    【讨论】:

    • 感谢 Chester,不过我希望自己构建它。
    • 是的,这将是最好的解决方案。但是在拉了很多我几乎不存在的头发试图这样做之后,我放弃了并开始挖掘现成的。如果您知道如何构建它,请告诉我们!
    • 你能分享单个 xmlrpc.so 文件吗?它应该是几 KB 并且对于慢速连接很有帮助,因为 Moodle 是 142MB。谢谢。
    • 我已经尝试过这个解决方案,但没有奏效。仍在等待 .so 文件作为替代解决方案
    • 我尝试了这个解决方案,但没有奏效。我认为这与两个程序的更新有关。 Moodle4Mac 现在使用 php 5.3.2 而 MAMP 使用 php 5.4.4。我无法下载旧的 xmlrpc.so 文件,所以这是我刚刚从 Moodle4Mac 创建的xmlrpc.so file
    【解决方案3】:

    请务必将 xmlrpc.so 文件移动到位置 /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/(PHP 版本也可能是 5.4或 5.5) 然后重启MAMP 然后在你的moodle安装中点击继续,它仍然会说你应该检查安装只是继续。 它将开始安装并完成所有模块和组件的安装,全部安装后按 Command F (MAC) 或 Control F (Win) 并搜索 xmlrpc.so 你会看到这是成功的,所以别担心,它会起作用的。

    【讨论】:

      【解决方案4】:
      1. 从 sourceforge http://sourceforge.net/projects/mamp/files/mamp/2.1.2/ 下载 MAMP 组件
      2. 解压压缩包
      3. 在解压后的文件夹中,您会看到几个 php 档案。提取与您安装的版本相对应的那个。 (在我的例子中,我安装的版本是 5.5.9,但 mamp 组件提供的最高版本是 5.4.4,所以我使用了它,因为无论如何我都要自己构建源代码)。
      4. 从终端 cd 进入您解压的 php 文件夹的 ext 文件夹,然后 cd 进入 xmlrpc 文件夹。
      5. 从终端运行以下命令

        ./配置

        制作

      6. 如果成功,请将 xmlrpc.so 从 builds 文件夹复制到 php 安装的 extensions 文件夹中。
      7. 将 extension=xmlrpc.so 添加到 php.ini

      【讨论】:

      • 我找到了这个指南:link 我必须使用 php 5.5.26(mamp 上的 5.6.x 有问题)
      猜你喜欢
      • 2021-09-17
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多