运行composer install时处理“系统中缺少所需的PHP扩展名pdo_sqlite。”

时间:2018-06-20 21:28:33

标签: php jenkins composer-php

我在詹金斯上运行composer install时遇到困难。

我有一份要运行composer install的詹金斯工作。我已经安装了php7.2和composer。运行命令时,出现以下错误:

composer install

  Problem 1
- teamtnt/tntsearch v1.3.2 requires ext-pdo_sqlite * -> the requested PHP extension pdo_sqlite is missing from your system.
- teamtnt/tntsearch v1.3.2 requires ext-pdo_sqlite * -> the requested PHP extension pdo_sqlite is missing from your system.
- Installation request for teamtnt/tntsearch v1.3.2 -> satisfiable by teamtnt/tntsearch[v1.3.2].

因此,我使用以下命令安装sqlite:sudo apt-get install php7.2-sqlite3

在此之后,我得到了额外的警告,并且错误仍然存​​在。

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_sqlite.so' 
(tried: /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: 
undefined symbol: sqlite3_column_table_name), /usr/lib/php/20170718/pdo_sqlite.so.so
(/usr/lib/php/20170718/pdo_sqlite.so.so: cannot open shared object file: 
No such file or directory)) in Unknown on line 0
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

Problem 1
- teamtnt/tntsearch v1.3.2 requires ext-pdo_sqlite * -> the requested PHP extension pdo_sqlite is missing from your system.
- teamtnt/tntsearch v1.3.2 requires ext-pdo_sqlite * -> the requested PHP extension pdo_sqlite is missing from your system.
- Installation request for teamtnt/tntsearch v1.3.2 -> satisfiable by teamtnt/tntsearch[v1.3.2].

当我进入Jenkins框并从工作区目录运行composer install时,一切都会按预期运行,并且生成的供应商目录没有错误。

我花了很多时间在StackOverflow上寻找现有问题的答案。

我清除了所有不是php7.2的内容,并删除了我计算机的所有以前版本。 我还安装了php7.2-pdo_sqlite,并确保将其显示在php.ini文件中。 我也尝试过完全删除php(并使用php -v检查),然后重新安装php7.2。 当我运行php --ini时,我会看到/etc/php/7.2/cli/conf.d/20-pdo_mysql.ini,并且 /etc/php/7.2/cli/conf.d/20-pdo_sqlite.ini显示在列表中。

我还授予了/usr/lib/php/20170718/pdo_sqlite.so的读取权限,以防它是由于权限错误引起的。

我还能做些什么来解决以上错误? -我的目标是能够运行作曲家安装。

1 个答案:

答案 0 :(得分:0)

解决方法

如果您的构建管道不需要安装sqlite,则可以使用--ignore-platform-reqs绕过平台要求检查,如下所示:

composer install --ignore-platform-reqs

来自documentation

  

-ignore-platform-reqs:忽略php,hhvm,lib- *和ext- *要求,即使本地计算机不满足要求,也强制安装   这些。另请参阅平台配置选项。

不幸的是,如果您有断言sqlite功能的测试,那么这不是解决方案。