0

我在选择 PHP 和 MongoDB 版本时遇到了一个大问题。

我有一个使用 PHP 5 MongoDB 驱动程序在 PHP5.6 中开发的项目,我愿意将 PHP 与 ZTS 和 pThreads 一起使用以进行并行执行。不幸的是,当我使用 ZTS 编译 PHP 时,pthreads 编译器在设置 PHP 时出现错误

/usr/src/php-5.6.12/meta_ccld -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/pthreads/ -I/usr/src/php-5.6.12/ext/pthreads/ -DPHP_ATOM_INC -I/usr/src/php-5.6.12/include -I/usr/src/php-5.6.12/main -I/usr/src/php-5.6.12 -I/usr/src/php-5.6.12/ext/date/lib -I/usr/src/php-5.6.12/ext/ereg/regex -I/usr/include/libxml2 -I/usr/src/php-5.6.12/ext/mbstring/oniguruma -I/usr/src/php-5.6.12/ext/mbstring/libmbfl -I/usr/src/php-5.6.12/ext/mbstring/libmbfl/mbfl -I/usr/src/php-5.6.12/ext/sqlite3/libsqlite -I/usr/src/php-5.6.12/ext/pthreads -I/usr/src/php-5.6.12/ext/zip/lib -I/usr/src/php-5.6.12/TSRM -I/usr/src/php-5.6.12/Zend -D_REENTRANT -I/usr/include -g -fvisibility=hidden -pthread - O0 -Wall -DZTS -c /usr/src/php-5.6.12/ext/pthreads/php_pthreads.c  -fPIC -DPIC -o ext/pthreads/.libs/php_pthreads.o

在 /usr/src/php-5.6.12/ext/pthreads/php_pthreads.c:22:0 包含的文件中:

ext/pthreads/src/pthreads.h:72:35: 致命错误:
Zend/zend_inheritance.h: No such file or directory #include
^
编译终止。
make: *** [ext/pthreads/php_pthreads.lo] 错误 1

现在,我坚持使用 PHP5 的原因可能是一件事,这显然是因为 php5 的 MongoDB 驱动程序。带有 ZTS 的 PHP7 可以完美运行,但我再次无法连接 MongoDB,因为 php7 具有不同的 mongoDB 驱动程序。

请指导我将代码更新到 PHP7 Mongo 是否只是我留下的解决方案?或者有什么解决方法吗?

提前致谢。

4

2 回答 2

0

我通过使用 CentOS 6.5 配置 PHP ZTS 5.5.8 来修复它

我的问题是我正在使用 php 5.x 安装 pthreads v3,但不幸的是它不受支持。我还尝试了使用 ubuntu 的 pthreads v2,但不知何故它不起作用,所以我改变了 detro,现在它工作得很好。

希望它会帮助某人。

于 2018-01-11T14:13:45.643 回答
0

在文件夹 pthreads 中运行:

git checkout PHP5

我用 ZTS 安装了 PHP5:

mkdir /usr/local/src/
wget http://uk1.php.net/get/php-5.6.12.tar.gz/from/this/mirror -O php.tar.gz
tar xzvf php.tar.gz
cd php-5.6.12/ext
git clone https://github.com/krakjoe/pthreads.git
cd pthreads
git checkout PHP5
于 2018-03-22T06:37:41.900 回答