PHP 警告:PHP 啟動:無法載入動態函式庫

PHP 警告:PHP 啟動:無法載入動態函式庫

我在這裡看到了很多關於這個問題的帖子,但尚未了解我的設定有什麼問題。這是我嘗試使用 PHP 運行任何內容時得到的結果:

Sat Sep 02 - 12:11 PM > php -version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/tidy.dll' - No such file or directory in Unknown on line 0
PHP 7.0.19 (cli) (built: May 14 2017 03:08:04) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

該文件tidy.dll中引用了ini

Sat Sep 02 - 12:11 PM > cat /etc/php.d/tidy.ini
extension = tidy.dll

這是我的extension_dir定義:

Sat Sep 02 - 12:12 PM > php -i | grep extension_dir
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/tidy.dll' - No such file or directory in Unknown on line 0
extension_dir => /usr/lib/php/20151012 => /usr/lib/php/20151012

該目錄中的權限看起來沒問題。

Sat Sep 02 - 12:12 PM > ls -la /usr/lib/php/20151012
total 2228
drwxr-xr-x+ 1 RobertMarkBram None      0 Aug 31 21:20 .
drwxr-xr-x+ 1 RobertMarkBram None      0 Apr 13 15:25 ..
-rwxr-xr-x  1 RobertMarkBram None  15389 May 14 18:27 ctype.dll
-rwxr-xr-x  1 RobertMarkBram None  81949 May 14 18:27 curl.dll
-rwxr-xr-x  1 RobertMarkBram None  76829 May 14 18:27 gd.dll
-rwxr-xr-x  1 RobertMarkBram None 956957 May 14 18:27 imap.dll
-rwxr-xr-x  1 RobertMarkBram None 426013 May 14 18:27 intl.dll
-rwxr-xr-x  1 RobertMarkBram None  36381 May 14 18:27 json.dll
-rwxr-xr-x  1 RobertMarkBram None  35357 May 14 18:27 mcrypt.dll
-rwxr-xr-x  1 RobertMarkBram None 110621 May 14 18:27 mysqli.dll
-rwxr-xr-x  1 RobertMarkBram None  27165 May 14 18:27 pdo_mysql.dll
-rwxr-xr-x  1 RobertMarkBram None 271389 May 14 18:27 phar.dll
-rwxr-xr-x  1 RobertMarkBram None  19485 May 14 18:27 pspell.dll
-rwxr-xr-x  1 RobertMarkBram None  10781 May 14 18:27 recode.dll
-rwxr-xr-x  1 RobertMarkBram None  43549 May 14 18:27 tidy.dll
-rwxr-xr-x  1 RobertMarkBram None  21021 May 14 18:27 tokenizer.dll
-rwxr-xr-x  1 RobertMarkBram None  81949 May 14 18:27 xmlrpc.dll
-rwxr-xr-x  1 RobertMarkBram None  27677 May 14 18:27 xsl.dll

僅查看 ACL tidy.dll,我沒有發現問題。

Sat Sep 02 - 12:13 PM > getfacl /usr/lib/php/20151012/tidy.dll
# file: /usr/lib/php/20151012/tidy.dll
# owner: RobertMarkBram
# group: None
user::rwx
group::r-x
other:r-x

答案1

0x0f4d0000 是一個非常低的位址,tidy.dll 與其他資源或程式本身在該位址載入時發生衝突;所以加載失敗。

由於您安裝的是 32 位元:您安裝了太多程序,它們耗盡了可用位址空間。
dll 位址分配從 0x6fff 開始......並且向下,所以你消耗了所有它。

您可以查看/proc/self/maps/proc/<pid>/maps查看地址空間是如何分配的。

可能的解決方案:
1 大量減少安裝的程式數量並刪除所有不需要的東西。之後,您需要觸發完整的變基,請參閱https://cygwin.com/faq.html#faq.using.fixing-fork-failures
或 2 移動到 64 位元安裝

Cygwin 提供了超過 8000 個軟體包,但您不太可能需要超過 2000 個。

cygwin 郵件列表上最近關於同一問題的討論
https://cygwin.com/ml/cygwin/2017-08/msg00265.html

相關內容