2016-07-23 114 views
1
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/memcached.so' - /usr/lib/php/20131226/memcached.so: undefined symbol: php_msgpack_serialize in Unknown on line 0 

今天早些時候,我啓用了將消息轉發到我的服務器上的root @ localhost以回傳給我的個人電子郵件。PHP啓動:無法加載動態庫php_msgpack_serialize

我一直以30分鐘的間隔收到上述錯誤信息。當然,我查了一下,有一個附加到cron的PHP會話清理腳本,每隔30分鐘運行一次。

我一直在四處搜尋,但找不到任何具體的解決方案。

我的設置:

  • memcached的1.4.25
  • PHP 7.0
  • 的nginx/1.10.0
  • 的MySQL版本14.14 DISTRIB 5.7.13
  • Ubuntu服務器16.04 LTS

最近我發現我的問題上面是這樣的:http://community.rtcamp.com/t/php-warning-error-php-msgpack-serialize/6262 bu在那個線程上沒有答案。

回答

8

首先你需要計算出哪些PHP ini文件正在被加載。從命令行你可以運行php --ini。從技術上講,apache/nginx可以運行不同的版本,如果你想查看那個版本,你可以使用phpinfo(); exit();測試腳本查找。當你使用cron時,無論如何你都在使用命令行版本。

在這些文件中的一個,你會發現相似的一行:

extension="memcache.so" 

如果您不需要這個擴展的話,那麼只需把它註釋掉通過與前面加上;:

;extension="memcache.so" 

如果你需要擴展,那麼它聽起來像你需要重建這個模塊。最簡單的方法是使用PECL。

pecl install memcache 

您在運行安裝時可能需要遵循一些說明。一旦完成,您應該能夠運行php -v並且它不應該輸出相同的警告。如果這個工作正常,你只能看到php版本,你應該重新啓動nginx(如果你需要它在網站上,命令行應該立即工作)。 :

sudo service nginx restart 
+0

我意識到什麼是觸發錯誤甚至不是我的服務器與nginx一起使用。把它們全部刪除,現在放心。謝謝 – Rexford

+0

嗯,我的解決方案會修復php5錯誤:) – Farkie

1

我想你可以從網站here上的類似主題獲得幫助。

但簡單地說,你的一個擴展正在加載memcache,並且其中的路徑不正確。 你應該在你的php.ini中找到它並手動修復路徑。

+0

並找到確切分機呼叫的mecached沒有更多的抱怨警告就是我苦苦尋找。 – Rexford

+0

對不起,這樣的延遲迴復。您可以在Unix/Linux的/ usr/lib/php/modules的地址處['](http://stackoverflow.com/a/30371691/6627229)'here'中解釋模塊。 – Raham

1

這意味着有一個擴展= ...或zend_extension = ...行在你的一個php配置文件(php.ini,或另一個接近它),試圖加載該擴展:ixed.5.2 .lin

不幸的是,文件或路徑不存在或權限不正確。

嘗試搜索由PHP加載的.ini文件(phpinfo()可以指示哪些是) - 其中一個應該嘗試加載該擴展名。 糾正文件的路徑或註釋掉相應的行。

1

檢查是否安裝並啓用了msgpack擴展(php -i | grep msgpack)。

看來,在Ubuntu的PHP編譯它by default

如果已安裝並啓用,則檢查您的memcached擴展。也許你是從以前的安裝或類似的東西中使用它。

+0

我看到安裝了msgpack。 – Rexford

1

TL;博士:我最終不得不清除一切PHP這是從我的服務器手動小於php7.0,與他們相關的cron作業一起。

長的故事:

通過我的正在運行的進程(ps -aux | grep 'php')去,我意識到PHP5依然在那裏運行。我的服務器上的所有東西都使用PHP7,因此冗長的過程是多餘的,另外還有一個cron作業,它在某處使用腳本運行會話清理作業,這個腳本尋找所謂的缺少Memcached文件。

去除通過apt小於從系統PHP7所有PHPS後,我也去了刪除所有現有的文件夾,在/usr/lib/php5小於PHP7和或與他們的cron相關的工作沿着/usr/lib/php//etc/cron.d/php5和或/etc/cron.d/php/發現

從PHP會議關於清理內存緩存

相關問題