我正在尝试构建和使用带有 memcache 2.2.6 PECL 扩展的 PHP 5.5.3。我在 SUSE Linux 上从源代码构建。他们制作和安装都很好,但扩展无法加载:
$ ./php -n -z path/to/memcache.so
Failed loading path/to/memcache.so: path/to/memcache.so: undefined symbol: php_session_create_id
$ readelf -s path/to//memcache.so | grep php_session_create_id
19: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_session_create_id
111: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND php_session_create_id
一些简短的背景。我对 PHP 8.2 和 memcache 1.5 做了同样的事情,它运行良好,但我想升级到两者的更新版本。
PHP 构建:
./configure --prefix="<php_location>"
--with-apxs2="<path/to/apxs2>"
--with-libxml-dir="<path/to/libxml2>"
--with-xsl="<path/to/libxslt>"
--with-zlib="<path/to/zlib>"
--with-ncurses="<path/to/ncurses>"
--with-ldap=shared,"<path/to/ldap>"
--with-openssl=shared,"<path/to/openssl>"
--with-curl=shared,"<path/to/curl>"
--with-pgsql=shared,"<path/to/postgresql>"
--with-config-file-path="<path/to/php.ini>"
--with-layout=GNU
--with-regex=php
--with-tsrm-pthreads
--disable-cgi
--disable-rpath
--disable-sysvsem
--disable-sysvshm
--disable-sysvmsg
--disable-bcmath
--disable-ctype
--disable-exif
--disable-spl
--disable-ftp
--disable-shmop
--enable-tokenizer
--enable-static
--enable-memory-limit
--enable-posix=shared
--enable-session=shared
--enable-sockets=shared
--enable-xml=shared
--enable-pcntl=shared
--enable-soap
--enable-dom
--without-mm
--without-gettext
--without-iconv
--without-sqlite
--without-mime-magic
--without-mysql
--without-sybase-ct
--without-gdbm
--without-db4
--without-cdb
--without-inifile
--without-flatfile
--without-pear
--disable-debug
--with-pcre-dir="<path/to/pcre>"
--with-pcre-regex
make
make install
内存缓存构建:
./configure --enable-memcache
--with-zlib-dir="<path/to/zlib>"
--with-php-config="<path/to/php-config>" # The one I just built
make
make install