1. 程式人生 > >關於 報錯 undefined symbol: php_json_serializable_ce

關於 報錯 undefined symbol: php_json_serializable_ce

homestead 參考 服務 git class dreams 時報 error mic

環境:

  lnmp(ubuntu 16.0.4 ;php7)

目的:

  安裝phalcon7(相關鏈接:https://github.com/dreamsxin/cphalcon7網上還有有很多,自行查找

問題:

  安裝完畢驗證時,執行命令

  # php --ri phalcon7

  報錯:

PHP Warning: PHP Startup: Unable to load dynamic library /usr/lib/php/20151012/phalcon.so - /usr/lib/php/20151012/phalcon.so: undefined symbol: php_json_serializable_ce
in Unknown on line 0

  紅色為重點,原因是json擴展問題

  1、php沒有裝json擴展 針對這點請自行安裝json擴展

  2、phalcon擴展在php加載擴展優先級高於json,故要將phalcon的優先級設置低於json

針對問題2的解決方案:

  1、將之前在php.ini中添加的 extension=phalcon.so此擴展刪除,包括fpm和cli中的php.ini

  2、不同系統路徑不同,我以ubuntu為例:在 /etc/php/7.0/mods-available/ 目錄下創建: phalcon.ini 文件,內容為: 

; configuration for
php phalcon7 module ; priority=30 extension=phalcon.so

  註:紅色 phalcon7 處。因為我是安裝的phalcon,若是安裝其他擴展請做相應更改

  這裏優先級設置為30 因為json的優先級為20 。(json優先級在 vim /etc/php/7.0/cli/conf.d/20-json.ini 或vim /etc/php/7.0/fpm/conf.d/20-json.ini 查看)

  3、在/etc/php/7.0/cli/conf.d/ 及/etc/php/7.0/fpm/conf.d/ 目錄下分別創建軟連接,命令如下:

ln -s /etc/php/7.0/mods-available/phalcon.ini 30
-phalcon.ini

  4、重啟nginx和php服務:

sudo service nginx restart
sudo service php7.0-fpm restart

  5再次執行

  # php --ri phalcon7

  不再報錯

總結:

  此方案在php新增擴展時 報錯:undefined symbol: php_json_serializable_ce 均適用。網上查有朋友新增mongodb.so或ds.so 時報此錯誤。均可按照上面方法解決。註意一定要更改cli和fpm兩處,如果你的cli和fpm的配置不是共享的話

參考文章:

  https://stackoverflow.com/questions/40979377/laravel-homestead-mongo-install-causing-php-error-undefined-symbol-php-json-ser

  http://blog.csdn.net/cheniison/article/details/52351049

  

關於 報錯 undefined symbol: php_json_serializable_ce