0

我想在php中制作一个可以通过gmail地址发送和接收电子邮件的程序。我最初在运行 OS X 10.4 Tiger 的 PPC Mac 上使用 XAMPP 服务器,但它没有我需要的 ssl 支持。因此,我尝试设置一个(更新的)Apache 服务器,因为我的 mac 附带的服务器已经过时。通过从源代码编译,我安装了 Apache 服务器 (2.2)、php 的 imap 扩展和 php 的 openssl 扩展。(虽然我不知道是否需要。)

我像这样运行配置命令:

./configure --with-imap=/usr/local/imap-2007f/ --enable-sockets --with-imap-ssl=/usr/local/ssl --with-openssl=/usr/local/ssl - -with-apxs2=/usr/local/apache2/bin/apxs --with-kerberos

然后我按照 php.3.5.12 目录中的 INSTALL 文件中的说明执行了“make”命令。这导致:

collect2: ld 返回 1 退出状态
make: * [libs/libphp5.bundle] 错误 1

我已经研究过这个错误,并且似乎是由许多与我的项目无关的不同事情造成的。一方面,他们似乎都在使用(或尝试使用)MySQl。就我的目的而言,我不需要那个。我只是在寻找一种返回编程的方法,以便我可以完成我的程序。

感谢您的任何帮助!

编辑:这是完整的错误消息:

/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:  
_iconv  
collect2: ld returned 1 exit status  
make: *** [libs/libphp5.bundle] Error 1  
4

3 回答 3

1

我也遇到了这个问题,我已经解决了,付出了很多努力。我正在PHP5.5.12安装OS X 10.9.2.

默认 Makefile 将libiconv.2.dylib/usr/lib/with 语句下找到

19 MH_BUNDLE_FLAGS = -bundle -bundle_loader /usr/sbin/httpd -L/usr/lib -laprutil-1 -lldap -llber -llber -lexpat -liconv -lsqlite3 -lldap -llber -llber -L/usr/lib -lapr-1 -lpthread

/usr/lib/但是在OS XPHP中没有合适的 libiconv 和正确的架构。我猜该文件夹下的默认设置libiconv.2.dylib是支持 32 位架构。

所以,我们现在知道究竟是什么问题。我们有不同的方法来解决这个问题。

  1. (不推荐)使用配置安装最新的 libiconv(可从 gnu-libiconv(https://www.gnu.org/software/libiconv/#downloading)获得)--prefix=/usr

    但这种方式可能会衍生出其他更难的问题。因为 OS X 需要原来的libiconv.2.dylib. 改了之后,很多应用包括QQ、TeamViewer等x86支持的应用都打不开了。他们立即坠毁。如果你真的遇到这种情况,别担心,它是可以解决的。你可以查看我的 gist.github.com/Yougmark。无论如何,可以安装php。

  2. (推荐)使用配置安装最新的 libiconv(可从 [gnu-libiconv] 获得)--prefix=/usr/local

    然后修改Makefile之前$make的语句如下:

    19 MH_BUNDLE_FLAGS = -bundle -bundle_loader /usr/sbin/httpd -L/usr/local/lib -laprutil-1 -lldap -llber -llber -lexpat -liconv -lsqlite3 -lldap -llber -llber -L/usr/local/lib -lapr-1 -lpthread

    注意 的两个位置-L/usr/lib,将它们更改为-L/usr/local/lib

现在,制作和安装,享受新的 PHP! :)有关任何详细信息,您可以参考我的要点

于 2014-05-23T01:00:30.520 回答
0

似乎iconv没有安装该库。除非您需要它,否则您可以尝试使用--without-iconv配置选项禁用支持。

希望有帮助。

于 2012-05-05T04:03:45.153 回答
0

请注意,我必须在更改 Makefile 后运行“make clean”才能使其正常工作

于 2017-04-07T15:56:22.557 回答