PHP错误:libphp5.so:未定义的符号:_estrndup

时间:2010-03-05 09:44:17

标签: php c apache makefile configure

我手动编译Apache-MySQL-PHP,使用下面的配置选项构建自定义安装。当我启动apache时,它无法启动并在error_log中添加以下错误 * Apache 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:unfined defined symbol :_estrndup

./configure选项

APACHE  。/配置 \  --prefix = / opt / clamp \  --sysconfdir = / opt / clamp / etc \  --enable-auth-dbm \  --enable-cern-meta \  --enable-auth-digest \  --enable-charset-lite \   - 启用放气  --enable-expires \  --enable-cache \  --enable-disk-cache \  --enable-file-cache \  --en-header \   - 启用信息   - 启用 - 魔法 - 魔法\   - 启用代理\  --enable-proxy-ajp \   - 启用代理平衡器  --enable-proxy-connect \  --enable-proxy-ftp \  --enable-proxy-http \   - 启用重写\   - 启用 - 所以  --enable-SSL

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

PHP  。/配置 \  --prefix = / opt / clamp \  --sysconfdir = / opt / clamp / etc \  --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-redirect \  --disable-cgi \  --with-zlib \  --with-gettext \  --with-gdbm \  --with-ldap \  --with-ldap-sasl \   - 支持拉链  --with-bz2 \  --with-gd \  --with-jpeg-dir = / usr \  --with-PNG-DIR = / USR

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

似乎我没有正确构建PHP的GD库,使用以下选项构建PHP(没有更多错误):

cd php-5.2.13 / 。/配置 \ --prefix = / opt / clamp \ --sysconfdir = / opt / clamp / etc \ --with-apxs2 = / opt / clamp / bin / apxs \ --with-config-file-path = / opt / clamp / etc / php.conf \ --disable-debug \ --with-pic \ --disable-rpath \ - 没有梨 --with-bz2 \ - 卷曲\ --with-freetype-dir = / usr \ --with-png-dir = / usr \ --enable-gd-native-ttf \ --without-gdbm \ --with-gettext \ --with-gmp \ --with-iconv \ --with-jpeg-dir = / usr \ --with-openssl \ --with-pspell \ --with-zlib \ --with-layout = GNU \ --enable-exif \ --enable-ftp \ - 启用魔法报价\ - 启用套接字 --enable-sysvsem --enable-sysvshm --enable-sysvmsg \ --enable-wddx \ - 与 - kerberos \ --enable-ucd-snmp-hack \ - 启用shmop \ - 启用日历 --without-sqlite \ --enable-force-cgi-redirect \ --enable-pcntl \ --with-imap --with-imap-ssl \ --enable-mbstring \ --enable-mbregex \ --with-ncurses \ --with-gd \ --enable-bcmath \ --with-xmlrpc \ --with-ldap --with-ldap-sasl \ --with-mysql = / opt / clamp \ --with-mysqli = / opt / clamp / bin / mysql_config \ - 启用dom \ --with-pgsql \ - 启用肥皂 --enable-xmlreader --enable-xmlwriter \ --enable-fastcgi的 使 make install

答案 2 :(得分:-1)

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