2016-05-31 110 views
6

我試圖將相當大的PHP 5.3代碼庫升級到PHP 7.它託管在CentOS 6.5上,所以我想保留它在該OS上。我目前正在處理Vagrant盒子 - 我已經成功安裝了PHP 7,並且除Memcache之外的所有模塊。在CentOS上使用PHP 7的Memcache擴展未能安裝

作爲根,當我運行pecl install memcache它試圖安裝v2.2.7,但我從產生錯誤和警告的長列表。在結束是:

make: *** [memcache.lo] Error 1 
ERROR: `make' failed 

根據GoPHP7它應該工作,應該內存緩存使用PHP 7的工作 - 它說: 「在githubPHP7端口」。確實有一個Memcache PHP 7 port on GitHub。當我查看Memcache page on Pecl頁面時,它顯示我應該安裝v3.0.8,但這是在測試階段(自2013年起)。

所以我嘗試運行pecl install memcache-3.0.8,它仍然失敗,並同樣的錯誤如上:

make: *** [memcache.lo] Error 1 
ERROR: `make' failed 

所以是有可能得到的內存緩存擴展與PHP 7在CentOS 6.5的工作?

回答

18

如果你還沒有解決這個問題,我有一個解決方案,爲我工作。我使用的是CentOS 7.x,但它仍然適用於您,其他任何人都希望使用pecl-memcache與PHP 7(不是pecl-memcached,因爲這是完全不同的包)。

正如你已經發現的,你必須使用Memcache PHP 7 port on GitHub這個。

登錄到你的shell並執行以下操作:

1. wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip 
2. unzip NON_BLOCKING_IO_php7.zip 
3. cd pecl-memcache-NON_BLOCKING_IO_php7 
4. /opt/cpanel/ea-php70/root/usr/bin/phpize && ./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php70/root/usr/bin/php-config && make 
5. cp modules/memcache.so /opt/cpanel/ea-php70/root/usr/lib64/php/modules/ 
6. echo 'extension=memcache.so' >/opt/cpanel/ea-php70/root/etc/php.d/memcached.ini 
7. service httpd restart 

一些筆記上面:

  • 更換,我已經與適當的完整路徑在自己的系統上使用的每個完整路徑。雖然我有/ opt/cpanel/ea-php70/root /,你可能有/opt/php-7.0.7/。如果您安裝了多個PHP版本,那麼運行phpize最終可能會使用舊版本的PHP進行構建。經過多次試驗和錯誤之後我發現了這一點您可以運行「/ opt/cpanel/ea-php70/root/usr/bin/php -i | grep extension_dir」
  • 您可能不需要執行第6步如果您已經在其他地方加載了它,我將在其中創建一個memcached.ini。
  • 您可以使用「/ opt/cpanel/ea-php70/root/usr/bin/php -i | grep memcache」驗證它是否正確構建和安裝。如果您看到各種memcache條目,則所有內容均已成功安裝。

我希望有幫助!

+1

你達人。聖我不敢相信這是很難找到這個信息 – Sebas

+1

第二行應該是'unzip NON_BLOCKING_IO_php7.zip' ;-) – Tim

+0

你是對的,蒂姆!我甚至在發佈前仔細檢查過幾次,但我猜這一次滑落了我。謝謝,並修復! – Phil