我运行PHP脚本并得到此错误:
PHP警告:PHP启动:无法加载动态库'/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - / usr / local / lib / php / extensions /no-debug-non-zts-20090626/ixed.5.2.lin:无法打开共享对象文件:第0行的“未知”中没有此类文件或目录
那是什么意思?
这意味着在你的一个php配置文件(php.ini或其他接近它)中有一个extension=...
或zend_extension=...
行试图加载该扩展:ixed.5.2.lin
不幸的是,该文件或路径不存在或权限不正确。
.ini
文件(phpinfo()
可以指示哪些文件) - 其中一个应该尝试加载该扩展名。我遇到了类似的错误。我犯的错误是在我的网址中使用“控制器”名称作为“页面”而不是“页面”。
当我在服务器上并行运行不同版本的PHP时,我在许多模块上出现此错误。为了解决这个问题,我需要安装它找不到特定PHP版本的软件包。所以,例如,如果我看到: -
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'
我会专门为PHP版本安装库: -
sudo apt-get install php7.1-xml
然后重启Apache。为我修好了。你可以检查你的版本: -
php -v
如果您使用的是Linux,则可以通过在shell中键入以下内容来查找所有已加载的配置文件:
php -r "print phpinfo();" | grep ".ini"
更新:如评论中所述,这可能更准确:
php -i | grep ini
如果您只是想让错误消失,而您不需要扩展名,那么请务必在php.ini
中注释该行。但是如果你真的想解决这个问题,还有一些额外的信息。
基于确切的模块有多种原因,但也有一些通用的指导原则。
phpinfo()
并在extension_dir
部分寻找Core
。这是您的模块所在的位置。例如,适用于Unix / Linux的
/usr/lib/php/modules
。
Installation on *nix (PEAR) Installation of extensions on Windows
phpStorm与XAMPP
TL; DR除了验证文件是否存在外,您可能需要将驱动器号添加到php.ini文件中的某些记录中
我突然开始使用phpStorm 7来调试带有xampp和xdebug的php。当试图将intellij interperter设置为xampps php时,我收到了很多警告,比如问题中的警告,例如:
无法加载动态库'/xampp/php/ext/php_bz2.dll'
出于某种原因,我必须将我的驱动器号添加到php.ini文件中的extension_dir和browscap的记录中:
extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"
至
extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"
php -r "echo php_ini_loaded_file();"
将在CLI当前ini加载文件中显示,在那里搜索您的扩展名,其路径不正确。
请注意,如果您的PHP库没有“其他”目录打开权限,您也可能会收到此错误。在我的特定情况下,我在使用php -l
语法检查文本编辑器中的脚本时注意到了这一点。这意味着,由于我的帐户被称为“volomike”,该帐户无权运行php
命令所依赖的库。
例如,在Ubuntu 14.04上,我将PHP5自动安装到路径/usr/lib/php5/20121212+lfs
中。但是,因为我在C ++中构建了一些共享对象,所以我搞砸了目录权限并搞砸了事情,以至于非root帐户没有目录执行(目录打开)权限来查看/usr/lib/php5/20121212+lfs
。所以,我输入以下命令来纠正这个问题:
sudo chmod o+x /usr/lib/php5/20121212+lfs
。
现在,当我将php -l example.php
作为非root用户时,它再也没有给我这个“无法加载动态库”的问题。
当我尝试通过php.ini文件安装php-extension时,我遇到了这条警告消息;
直到我发现你无法在Linux中加载.dll扩展名,
但你必须评论你要导入;extension= ... .dll
的扩展并通过sudo apt-get install php-...
正确安装它
注意:...
是您要启用的扩展名。
当我尝试安装composer时,我在XAMPP for Windows上遇到了同样的问题。我做了php -v
和php抛出错误:
无法加载动态库'/xampp/php/ext/php_bz2.dll'
我花了一段时间才意识到我需要设置我的XAMPP。所以我运行setup_xampp.bat
和php返回工作就像一个魅力。
在Windows 10 XAMPP
之后,我在Ubuntu上安装了LAMPP (XAMPP)
。与MAC(iOS)相比,Windows XAMPP
的配置要少得多,但现在Linux Ubuntu还有一些,因为Linux有更多的东西(一件好事)。
我困惑并激活mysqli.dll
(和mysql.dll:擦除“#”在/etc/php/7.2/cli/php.ini
我开始得到与PHP Warning: PHP Startup: Unable to load dynamic library
相关的dll
消息。我在同一个文件中注释掉了mysql(and i).dll
,但是直到我在/opt/lampp/etc/php.ini
评论了“”时,消息才消失。
看起来像XAMPP从php.ini
读取/etc/php/7.2/cli
文件并在php.ini
的/opt/lampp/etc
中进行修改。 (; extension = php_pdo_mysql.dll在“;”之后重新启动Apache而不再有任何消息。