在 ubuntu 16.04 中使用 pdo-mysql 的 PHP

在 ubuntu 16.04 中使用 pdo-mysql 的 PHP

我一直在尝试在启用 PDO 的 Ubuntu (16.04) 中安装 php (7.2)。我不需要 php 作为 apache 模块,因为我想使用 PHP 内置服务器(在 cli 模式下,如php -S localhost:80)。

因此,这就是我要做的:

sudo apt-get install php

sudo apt-get install php-mysql

sudo cp /usr/lib/php/7.2/php.ini-production.cli /etc/php/7.2/cli/php.ini

现在,在 php.ini 中取消注释:

extension=pdo_mysql

当我运行时仍然php -v出现错误:

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20170718/pdo_mysql (/usr/lib/php/20170718/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_mysql.so (/usr/lib/php/20170718/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0

php -m输出:

[PHP Modules]
Core
date
filter
hash
libxml
openssl
pcntl
pcre
Reflection
session
sodium
SPL
standard
zlib
[Zend Modules]

答案1

我用这种方式解决了这个问题:

sudo apt-get --purge remove php-common

sudo apt-get install php-common php-mysql php-cli

现在没有错误并php -m显示一切正常:

[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib

[Zend Modules]
Zend OPcache

仍然不知道问题最初是什么原因造成的

答案2

我在工作台上手动取消了几个注释,也给自己带来了同样的问题

;extension=<module>

php.ini。这确实让我对这个过程产生了怀疑apt-get install。我认为现代 php7+ 使用conf.d特定文件来处理这些扩展,例如:

  • /etc/php/7.3/cli/conf.d/10-pdo.ini
  • /etc/php/7.3/cli/conf.d/20-pdo_mysql.ini

对我来说,答案是;extension在 cli 的php.ini文件中重新注释这些行。

相关内容