我正在尝试在PHP 7 RC3
上使用Nginx
+ Ubuntu 14.04
设置网络服务器(用于测试目的)。
我使用来自OndřejSurý(https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0)的ubuntu/trusty64
和PHP 7 RC 3在Vagrant中安装了Ubuntu。
我找不到安装MySQL PDO
的方法(PHP看到PDO
类但没有与MySQL有关的任何内容,如PDO::MYSQL_ATTR_DIRECT_QUERY
等。
看起来没有lib php7.0-mysql
(类似于Ondřej的标准php5-mysqlnd
和php7.0-fpm
等)
PDO
中的phpinfo()
部分:
PDO support enabled
PDO drivers no value
我怎样才能得到它?
答案 0 :(得分:93)
对于使用apache2运行Linux的人,你需要安装php-mysql
apt-get install php-mysql
或者如果您正在运行ubuntu 16.04或更高版本,则只需运行以下命令即可,无需编辑您的php.ini文件
apt-get install php7.0-mysql
如果您正在运行ubuntu 15.10或更低版本:
修改您的 php.ini 文件 搜索 pdo_mysql 你可能会发现这样的东西
;extension=pdo_mysql.so
将其更改为此
extension=pdo_mysql.so
保存文件并重启apache
service apache2 restart
检查 phpinfo()
中是否可以使用它答案 1 :(得分:21)
首先安装php-mysql
sudo apt-get install php7.0-mysql
然后启用模块
sudo phpenmod pdo_mysql
并重新启动apache
sudo service apache2 restart
答案 2 :(得分:4)
首先,检查你的php.ini是否启用了扩展名“php_pdo_mysql”和“php_mysqli”,并且“extension_dir”的路径是否正确。如果您需要以上配置之一,则必须重新启动php-fpm以应用更改。
在我的情况下(我在公司使用Windows操作系统,我真的更喜欢OSX或Linux),我解决了将这些值放在php.ini中的问题:
; ...
extension_dir = "ext"
; ...
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
; ...
我希望这会有所帮助。
答案 3 :(得分:3)
由于eggyal在评论中给出了正确的建议后没有提供他的评论作为答案 - 我在这里发布:在我的情况下,我必须安装模块php-mysql
。有关详细信息,请参阅问题下的评论。
答案 4 :(得分:3)
如果你在Windows上,并且你的php文件夹不在你的PATH中,你已经在php.ini中设置了绝对目录
例如:
extension_dir = "C:/php7/ext"
并取消注释
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
重启apache2.4,它应该可以工作。
我希望它有所帮助。
答案 5 :(得分:3)
phpize
./ configure
请
make install(以root身份)
这对我有用
答案 6 :(得分:2)
我几乎也有同样的问题。我能够看到PDO已启用但我没有可用的驱动程序(使用PHP 7-RC4)。我设法通过将php_pdo_mysql扩展名添加到已启用的扩展名来解决此问题。
希望这有帮助!
答案 7 :(得分:2)
我通过重新安装php-mysql解决了ubunto 20.4上的问题。
删除php-mysql:
sudo apt purge php7.2-mysql
然后安装php-mysql:
sudo apt install php7.2-mysql
它将在php.ini中添加新配置
答案 8 :(得分:2)
在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
答案 9 :(得分:1)
有同样的问题,通过使用正确的文件名实际启用php.ini中的扩展来解决。它被列为php_pdo_mysql.so,但/ lib / php / modules中的模块名称只被称为pdo_mysql.so
所以只需从php.ini文件中删除“php_”前缀,然后重新启动httpd服务,就像魅力一样。
请注意我使用Arch,因此路径名称和服务可能因您的发布而有所不同。
答案 10 :(得分:1)
我将先从答案开始,然后从上下文开始。注意,此修复程序已记录在上面,我只是在对所有使用Google搜索的人进行重新声明。
使用命令:
phpize
./ configure
制作
进行安装(以root用户身份)
在您的php.ini文件中启用extension = mysqli.so
这是从此处答复的记录(如果有帮助,也请对其进行投票):https://stackoverflow.com/a/39277373/3912517
上下文: 我正在尝试将LimeSurvey添加到标准WordPress Docker中。使我退缩的唯一一点是“ PHP PDO驱动程序库”,即“找不到”
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
Ubuntu 16(Ubuntu 7.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数据。
按照其他说明进行操作: apt-get更新 我得到这个: 错误:14 http://ppa.launchpad.net/ondrej/apache2/ubuntu个cosmic / main amd64软件包 找不到404 错误: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问题,并试图解决该问题,并且....您明白了... whack-a-mole。我放弃了,看我是否可以编译它,我找到了开始的答案。
您可能想知道我为什么写那么多文字?这样,任何使用Google搜索的人都可以找到此解决方案(包括我在内!)。
答案 11 :(得分:0)
['class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',]
很简单:
只需提供端口号以及主机名
并将默认的袜子路径设置为运行服务器的mysql.sock
中的php.ini
文件路径。