在 Linux 手動編譯安裝 ImageMagick 或其他軟體後,執行指令常遇到:
convert: error while loading shared libraries: libMagickCore.so.5: cannot open shared object file: No such file or directory
這是因為動態連結器預設搜尋路徑(/lib、/usr/lib)不包含自訂安裝目錄(如 /usr/local/lib)。本文提供標準解決方案。
/etc/ld.so.conf,新增庫檔所在目錄:echo "/usr/local/lib" >> /etc/ld.so.confldconfig -v 重建快取並驗證:libMagickCore.so.5 -> libMagickCore.so.5.0.0 等行。convert -version 確認正常。ld.so.conf:動態連結器執行時期的庫搜尋路徑配置檔。ldconfig:掃描配置目錄,建立 /etc/ld.so.cache 快取,供執行時期快速查找。ld.so.conf 後必須執行 ldconfig 才生效,否則連結器仍讀取舊快取。若無 root 權限或不想影響全系統,可在啟動腳本中設定 LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# 或在 PHP 中
putenv('LD_LIBRARY_PATH=/usr/local/lib');
但生產環境建議採用系統級 ldconfig 方案,避免環境變數遺漏導致的不穩定。
#!/bin/bash
if convert -version 2>&1 | grep -q "ImageMagick"; then
echo "ImageMagick OK"
else
echo "ImageMagick FAILED"
exit 1
fi
將此腳本加入部署流程,可自動偵測庫路徑問題。更多編譯安裝細節請參考《PHP 圖片處理庫 ImageMagick 安裝完整指南》。