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.dllini文件中引用了

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

相关内容