【问题标题】:PHP error: libphp5.so: undefined symbol: _estrndup [closed]PHP错误:libphp5.so:未定义符号:_estrndup [关闭]
【发布时间】:2013-04-02 07:15:16
【问题描述】:

我使用下面的配置选项手动编译 Apache-MySQL-PHP 以构建自定义安装。当我启动 apache 时,它​​无法启动并在 error_log 中添加以下错误。
* 阿帕奇 2
* mysql 5.0
* PHP 5.1
* CentOS Linux 5.4 * GCC 编译器

apache 日志中的错误

httpd:/opt/clamp/etc/httpd.conf 第 54 行的语法错误:无法将 /opt/clamp/modules/libphp5.so 加载到服务器中:/opt/clamp/modules/libphp5.so:未定义符号: _estrndup

./configure 选项

阿帕奇 。/配置 \ --prefix=/opt/clamp \ --sysconfdir=/opt/clamp/等\ --启用身份验证数据库\ --启用-cern-meta \ --启用授权摘要\ --启用字符集精简版\ --启用放气\ --启用过期\ --启用缓存\ --启用磁盘缓存\ --启用文件缓存\ --启用标头\ --启用信息\ --启用哑剧魔法\ --启用代理\ --启用-代理-ajp \ --启用代理平衡器\ --启用代理连接\ --启用-代理-ftp \ --启用-代理-http \ --启用重写\ --启用-所以\ --enable-ssl

MYSQL 。/配置 \ --prefix=/opt/clamp \ --sysconfdir=/opt/clamp/等\ --libexecdir=/opt/clamp/sbin\ --localstatedir=/opt/clamp/var \ --with-unix-socket-path=/opt/clamp/tmp/mysql.sock \ --启用线程安全

PHP 。/配置 \ --prefix=/opt/clamp \ --sysconfdir=/opt/clamp/等\ --with-apxs2=/opt/clamp/bin/apxs \ --with-config-file-path=/opt/clamp/etc/php.conf \ --with-mysql=/opt/clamp \ --with-mysqli=/opt/clamp/bin/mysql_config \ --enable-force-cgi-重定向\ --禁用-cgi \ --with-zlib \ --with-gettext \ --with-gdbm \ --with-ldap \ --with-ldap-sasl \ --启用压缩\ --with-bz2 \ --with-gd \ --with-jpeg-dir=/usr\ --with-png-dir=/usr

【问题讨论】:

  • 请注意,在我尝试通过 --enable-zip --with-bz2 --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr 添加 gd 支持后出现错误
  • 首先:明确哪个平台(Linux,好的,但是哪个发行版),哪个编译器。并且不要忘记这个非常有用的命令行,它搜索包含以下单词的所有 C 文件(包括子目录):“find . | grep \.h$ | xargs grep [the word you're looking]”。最后,谷歌是你的朋友:linuxquestions.org/questions/linux-software-2/…
  • 平台为CentOS Linux,gcc编译器。

标签: php c apache makefile configure


【解决方案1】:

如果你不想阅读所有的错误日志,你可以试试:

char *
estrndup(const char *s, size_t len)
{
    char *d = strndup(s, len);
    //if (d == NULL)
    //  (*efunc)(1, "Cannot copy string");
    return d;
}

【讨论】:

  • 我还应该阅读哪些其他日志?
  • 我的意思是,如果您不打算阅读任何错误日志,那么您可以尝试提供的 sn-p
【解决方案2】:

似乎我没有正确构建 PHP 的 GD 库,使用以下选项构建 PHP 有效(不再出现错误):

cd php-5.2.13/ 。/配置 \ --prefix=/opt/clamp \ --sysconfdir=/opt/clamp/等\ --with-apxs2=/opt/clamp/bin/apxs \ --with-config-file-path=/opt/clamp/etc/php.conf \ --禁用调试\ --带图片\ --禁用-rpath \ --无梨\ --with-bz2 \ --带卷曲\ --with-freetype-dir=/usr\ --with-png-dir=/usr\ --启用-gd-本机-ttf \ --没有-gdbm \ --with-gettext \ --with-gmp \ --with-iconv \ --with-jpeg-dir=/usr\ --with-openssl \ --with-pspell \ --with-zlib \ --with-layout=GNU \ --启用-exif \ --启用-ftp \ --启用魔术引号\ --启用套接字\ --enable-sysvsem --enable-sysvshm --enable-sysvmsg \ --启用-wddx \ --with-kerberos \ --启用-ucd-snmp-hack \ --启用-shmop \ --启用日历\ --没有-sqlite \ --enable-force-cgi-重定向\ --启用-pcntl \ --with-imap --with-imap-ssl \ --启用mbstring \ --启用-mbregex \ --with-ncurses \ --with-gd \ --启用-bcmath \ --with-xmlrpc \ --with-ldap --with-ldap-sasl \ --with-mysql=/opt/clamp \ --with-mysqli=/opt/clamp/bin/mysql_config \ --启用域\ --with-pgsql \ --启用肥皂\ --enable-xmlreader --enable-xmlwriter \ --启用-fastcgi 制作 进行安装

【讨论】:

    【解决方案3】:

    这意味着你没有正确构建你的 php,可能是因为你已经做了好几次,就像我一样,只是最后一次成功了。在这些构建时间之间,您已经安装了一些支持包,而您一开始就忘记了。因此,如果您没有 make clean,您最终会得到一些不干净的东西。 Apache 太挑剔了。所以最好的尝试是再次运行 'make clean' 并重建 php 以查看实际发生的情况。

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2011-07-25
      • 1970-01-01
      • 2014-02-03
      相关资源
      最近更新 更多