2017-06-22 166 views
0

我试图安装cli的pdo-sqlite分机。无法加载pdo_sqlite.so扩展

我试图运行sudo apt-get install php5-sqlite它说ext已经是最新的,但是当我运行php -m它不会出现在列表中。

在我的/ usr/lib/php /文件夹中,我有2个文件夹名为20131226和20160303.后者(20160303)包含pdo_sqlite.so,但是当我尝试将此添加到php.ini文件时,出现错误

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/pdo_sqlite.so' - /usr/lib/php/20160303/pdo_sqlite.so: undefined symbol: zend_fetch_resource2_ex in Unknown on line 0

我运行Ubuntu 14.04和PHP 5.6。

有人能帮助解决这个问题吗?也有人能够解释为什么PHP扩展存储在这些不同的编号文件夹中,以及PHP如何知道要查找哪一个?谢谢。

回答

1

你已经安装了两个不同版本的PHP(至少部分),并且它们是冲突的。您可能需要清理未使用的版本,以防止出现更多问题。擦拭两者然后重新安装你想要的可能是最简单的。另外请确保您的php.ini的extension_dir设置指向您保留的版本的正确目录。

内部PHP API根据日期进行版本控制,因此当进行向后不兼容的更改并需要新版本时,您将获得新的子目录名称。如果更改是向后兼容的,并且不需要新的API版本,那么您可以对PHP版本进行微小更新,而无需重新编译扩展。

我相信20131226是PHP版本5.6,20160303是PHP版本7.

+0

非常感谢你的工作!我使用这个命令从我的系统完全擦除了PHP:sudo aptitude purge'dpkg -l | grep php | awk'{print $ 2}'| tr“\ n”“”'并重新安装了php,一切正常。非常感谢你的帮助和非常丰富的回答:) – SamBremner