歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RHEL 5 編譯 eAccelerator 0.9.6.1 遇到的問題

RHEL 5 編譯 eAccelerator 0.9.6.1 遇到的問題

日期:2017/2/28 16:11:05   编辑:Linux教程
很早就知道這個模塊可以加速 PHP 運算,但是看到其版本號不禁讓人菊花一緊,不到 1.0 的可用程度……不過後來在其他服務器上跑跑看感覺還不錯,如是乎上線吧。但是在 RHEL 5 機器上編譯 eaccelerator 0.9.6.1 發現出錯鳥,提示信息如下

gcc -I. -I/root/eaccelerator-0.9.6.1 -DPHP_ATOM_INC -I/root/eaccelerator-0.9.6.1/include -I/root/eaccelerator-0.9.6.1/main -I/root/eaccelerator-0.9.6.1 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /root/eaccelerator-0.9.6.1/ea_store.c -fPIC -DPIC -o .libs/ea_store.o
/root/eaccelerator-0.9.6.1/ea_store.c: In function ‘store_property_access_check’:
/root/eaccelerator-0.9.6.1/ea_store.c:683: error: ‘zend_property_info’ has no member named ‘ce’
make: *** [ea_store.lo] Error 1

  由於 RHEL 5 發布的比較早,所以還是 PHP 5.1 的版本,而不是目前較為流行的 5.2,且 eaccelerator 是最新的 0.9.6.1,因此初步認為是版本 mismatch 導致。

  後來到 eaccelerator 官網上轉了一圈發現確實是 eaccelerator 對 Zend 版本判斷的問題,www.linuxidc.com找到了原因就好辦了,寫個ea_store.RHEL5.patch(點擊這裡下載),下載後解壓得到ea_store.RHEL5.patch

  1. patch -p0 < ea_store.RHEL5_.patch

源碼如下

  1. --- ea_store.c.orig 2010-09-13 10:22:28.000000000 +0800
  2. +++ ea_store.c 2010-09-13 10:17:03.000000000 +0800
  3. @@ -680,7 +680,9 @@
  4. zend_property_info* child_info = (zend_property_info*)p->pData;
  5. zend_property_info* parent_info = NULL;
  6. +#ifdef ZEND_ENGINE_2_2
  7. return (child_info->ce != from);
  8. +#endif
  9. if (parent && zend_hash_quick_find(&parent->properties_info, p->arKey, p->nKeyLength, p->h, (void **) &parent_info)==SUCCESS) {
  10. if(parent_info->flags & ZEND_ACC_PRIVATE) {
Copyright © Linux教程網 All Rights Reserved