PHP 7 RC3:如何安装缺少的 MySQL PDO
PHP 7 RC3: How to install missing MySQL PDO
我正在尝试在 Ubuntu 14.04
上使用 PHP 7 RC3
+ Nginx
设置网络服务器(用于测试目的)。
我使用来自 Ondřej Surý (https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0) 的 ubuntu/trusty64
和 PHP 7 RC 3 在 Vagrant 中安装了 Ubuntu。
我找不到安装方法 MySQL PDO
(PHP 看到 PDO
class 但没有任何与 MySQL 相关的内容,例如 PDO::MYSQL_ATTR_DIRECT_QUERY
等)
看起来没有库 php7.0-mysql
(类比来自 Ondřej 的标准 php5-mysqlnd
和 php7.0-fpm
等)
phpinfo()
中的第 PDO
节:
PDO support enabled
PDO drivers no value
如何获取?
我几乎遇到了同样的问题。我能够看到 PDO 已启用,但我没有可用的驱动程序(使用 PHP 7-RC4)。我设法通过向已启用的扩展程序添加 php_pdo_mysql 扩展程序来解决问题。
希望对您有所帮助!
有同样的问题,通过在 php.ini 中使用正确的文件名实际启用扩展名来解决。它被列为 php_pdo_mysql.so 但 /lib/php/modules 中的模块名称被称为 pdo_mysql.so
所以只需从 php.ini 文件中删除 "php_" 前缀,然后重新启动 httpd 服务,它就可以正常工作了。
请注意,我使用的是 Arch,因此路径名称和服务可能会有所不同,具体取决于您的发行版。
由于 eggyal 在评论中给出了正确的建议后没有提供他的评论作为答案 - 我将其张贴在这里:在我的情况下,我必须安装模块 php-mysql
。详情见问题下的评论。
首先,检查您的php.ini是否启用了扩展"php_pdo_mysql"和"php_mysqli"以及"extension_dir"的路径是否正确。如果您需要上述配置之一,那么,您必须重新启动 php-fpm 以应用更改。
以我为例(我在公司使用Windows OS,我更喜欢OSX或Linux),我解决了问题php.ini 中的此值:
; ...
extension_dir = "ext"
; ...
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
; ...
希望对您有所帮助。
对于那些 运行 Linux with apache2 你需要安装 php-mysql
apt-get install php-mysql
或者,如果您是 运行 ubuntu 16.04 或更高版本,只需 运行 以下命令就足够了,无需编辑您的 php.ini 文件
apt-get install php7.2-mysql
如果您 运行 ubuntu 15.10 或以下:
编辑您的 php.ini 文件,它位于 /etc/php/[version]/apache2/php.ini
并搜索 pdo_mysql
你可能会发现这样的东西
;extension=pdo_mysql.so
改成这样
extension=pdo_mysql.so
保存文件并重启apache
service apache2 restart
检查它在您的 phpinfo()
中是否可用
如果您在 windows,并且您的 php 文件夹不在您的 PATH 中,则您已经在 php.ini
中设置了绝对目录
例如:
extension_dir = "C:/php7/ext"
并取消注释
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
重启 apache2.4 应该可以了。
希望对您有所帮助。
- 下载php7的源码并解压
- 打开你的终端
- 游到ext/mysqli目录
- 使用命令:
phpize
./configure
make
make install (as root)
- 在您的 php.ini 文件中启用扩展名=mysqli.so
- 完成!
这对我有用
首先安装php-mysql
sudo apt-get install php7.0-mysql
//change the version number based on the php version
然后启用模块
sudo phpenmod pdo_mysql
并重新启动 apache
sudo service apache2 restart
我将从答案开始,然后是上下文 注意此修复已记录在上面,我只是为任何谷歌搜索重新声明它。
- 下载php7的源码并解压
- 打开你的终端
- 游到ext/pdo_mysql目录
使用命令:
php大小
./配置
制作
进行安装(以 root 身份)
在您的 php.ini 文件中启用扩展=mysqli.so
这是从这里记录的答案(如果对您也有帮助,请点赞):
上下文:
我正在尝试将 LimeSurvey 添加到标准 WordPress Docker。阻碍我前进的唯一一点是 "PHP PDO driver library" 即 "None found"
php -i | grep PDO
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled
Ubuntu16 (Ubuntu7.3.0)
apt-get install php7.0-mysql
结果:
Package 'php7.0-mysql' has no installation candidate
获取说明,说明我所要做的就是 运行 这个:
add-apt-repository -y ppa:ondrej/apache2
但后来我明白了:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)
所以我尝试强制使用某种类型的 UTF:
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/apache2
我明白了:
未找到有效的 OpenPGP 数据。
按照其他一些说明 运行 执行此操作:
易于获取更新
我明白了:
Err:14 http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic/main amd64 包
404 未找到
Err:15 http://ppa.launchpad.net/ondrej/php/ubuntu cosmic/main amd64 软件包
404 未找到
并且 - 我认为正因为如此 - 然后我得到:
The repository 'http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic Release' does not have a Release file.
到这个阶段,我仍然在 apt-get update 上得到这个:
Package 'php7.0-mysql' has no installation candidate.
我开始尝试添加 php 库,遇到 Unicode 问题,试图解决这个问题,然后......你明白了......打地鼠。我放弃了,看看我是否可以编译它,我找到了我开始的答案。
你可能想知道为什么我写了这么多?这样任何谷歌搜索都可以找到这个解决方案(包括我!)。
['class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',]
很简单:
只需提供端口号和主机名
并将默认 sock 路径设置为服务器 运行 所在的 php.ini
中的 mysql.sock
文件路径。
我通过重新安装 php-mysql.
解决了我在 ubunto 20.4 上的问题
删除php-mysql:
sudo apt purge php7.2-mysql
然后安装php-mysql:
sudo apt install php7.2-mysql
它将在php.ini
中添加新的配置
在 ubuntu 18.04 以下对我有效
在您的终端中输入此内容
对于php7.3
sudo apt-get install php7.3-gd php7.3-mysql
对于php7.0
sudo apt-get install php7.0-gd php7.0-mysql
对于php5
sudo apt-get install php5-gd php5-mysql
我正在尝试在 Ubuntu 14.04
上使用 PHP 7 RC3
+ Nginx
设置网络服务器(用于测试目的)。
我使用来自 Ondřej Surý (https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0) 的 ubuntu/trusty64
和 PHP 7 RC 3 在 Vagrant 中安装了 Ubuntu。
我找不到安装方法 MySQL PDO
(PHP 看到 PDO
class 但没有任何与 MySQL 相关的内容,例如 PDO::MYSQL_ATTR_DIRECT_QUERY
等)
看起来没有库 php7.0-mysql
(类比来自 Ondřej 的标准 php5-mysqlnd
和 php7.0-fpm
等)
phpinfo()
中的第 PDO
节:
PDO support enabled
PDO drivers no value
如何获取?
我几乎遇到了同样的问题。我能够看到 PDO 已启用,但我没有可用的驱动程序(使用 PHP 7-RC4)。我设法通过向已启用的扩展程序添加 php_pdo_mysql 扩展程序来解决问题。
希望对您有所帮助!
有同样的问题,通过在 php.ini 中使用正确的文件名实际启用扩展名来解决。它被列为 php_pdo_mysql.so 但 /lib/php/modules 中的模块名称被称为 pdo_mysql.so
所以只需从 php.ini 文件中删除 "php_" 前缀,然后重新启动 httpd 服务,它就可以正常工作了。
请注意,我使用的是 Arch,因此路径名称和服务可能会有所不同,具体取决于您的发行版。
由于 eggyal 在评论中给出了正确的建议后没有提供他的评论作为答案 - 我将其张贴在这里:在我的情况下,我必须安装模块 php-mysql
。详情见问题下的评论。
首先,检查您的php.ini是否启用了扩展"php_pdo_mysql"和"php_mysqli"以及"extension_dir"的路径是否正确。如果您需要上述配置之一,那么,您必须重新启动 php-fpm 以应用更改。
以我为例(我在公司使用Windows OS,我更喜欢OSX或Linux),我解决了问题php.ini 中的此值:
; ...
extension_dir = "ext"
; ...
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
; ...
希望对您有所帮助。
对于那些 运行 Linux with apache2 你需要安装 php-mysql
apt-get install php-mysql
或者,如果您是 运行 ubuntu 16.04 或更高版本,只需 运行 以下命令就足够了,无需编辑您的 php.ini 文件
apt-get install php7.2-mysql
如果您 运行 ubuntu 15.10 或以下:
编辑您的 php.ini 文件,它位于 /etc/php/[version]/apache2/php.ini
并搜索 pdo_mysql
你可能会发现这样的东西
;extension=pdo_mysql.so
改成这样
extension=pdo_mysql.so
保存文件并重启apache
service apache2 restart
检查它在您的 phpinfo()
中是否可用如果您在 windows,并且您的 php 文件夹不在您的 PATH 中,则您已经在 php.ini
中设置了绝对目录例如:
extension_dir = "C:/php7/ext"
并取消注释
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
重启 apache2.4 应该可以了。
希望对您有所帮助。
- 下载php7的源码并解压
- 打开你的终端
- 游到ext/mysqli目录
- 使用命令:
phpize
./configure
make
make install (as root)
- 在您的 php.ini 文件中启用扩展名=mysqli.so
- 完成!
这对我有用
首先安装php-mysql
sudo apt-get install php7.0-mysql
//change the version number based on the php version
然后启用模块
sudo phpenmod pdo_mysql
并重新启动 apache
sudo service apache2 restart
我将从答案开始,然后是上下文 注意此修复已记录在上面,我只是为任何谷歌搜索重新声明它。
- 下载php7的源码并解压
- 打开你的终端
- 游到ext/pdo_mysql目录
使用命令:
php大小
./配置
制作
进行安装(以 root 身份)
在您的 php.ini 文件中启用扩展=mysqli.so
这是从这里记录的答案(如果对您也有帮助,请点赞):
上下文: 我正在尝试将 LimeSurvey 添加到标准 WordPress Docker。阻碍我前进的唯一一点是 "PHP PDO driver library" 即 "None found"
php -i | grep PDO
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled
Ubuntu16 (Ubuntu7.3.0)
apt-get install php7.0-mysql
结果:
Package 'php7.0-mysql' has no installation candidate
获取说明,说明我所要做的就是 运行 这个:
add-apt-repository -y ppa:ondrej/apache2
但后来我明白了:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)
所以我尝试强制使用某种类型的 UTF: LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/apache2 我明白了: 未找到有效的 OpenPGP 数据。
按照其他一些说明 运行 执行此操作: 易于获取更新 我明白了: Err:14 http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic/main amd64 包 404 未找到 Err:15 http://ppa.launchpad.net/ondrej/php/ubuntu cosmic/main amd64 软件包 404 未找到 并且 - 我认为正因为如此 - 然后我得到:
The repository 'http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic Release' does not have a Release file.
到这个阶段,我仍然在 apt-get update 上得到这个:
Package 'php7.0-mysql' has no installation candidate.
我开始尝试添加 php 库,遇到 Unicode 问题,试图解决这个问题,然后......你明白了......打地鼠。我放弃了,看看我是否可以编译它,我找到了我开始的答案。
你可能想知道为什么我写了这么多?这样任何谷歌搜索都可以找到这个解决方案(包括我!)。
['class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',]
很简单:
只需提供端口号和主机名
并将默认 sock 路径设置为服务器 运行 所在的 php.ini
中的 mysql.sock
文件路径。
我通过重新安装 php-mysql.
解决了我在 ubunto 20.4 上的问题删除php-mysql:
sudo apt purge php7.2-mysql
然后安装php-mysql:
sudo apt install php7.2-mysql
它将在php.ini
中添加新的配置在 ubuntu 18.04 以下对我有效
在您的终端中输入此内容
对于php7.3
sudo apt-get install php7.3-gd php7.3-mysql
对于php7.0
sudo apt-get install php7.0-gd php7.0-mysql
对于php5
sudo apt-get install php5-gd php5-mysql