web-dev-qa-db-ja.com

PHP 7 RC3:欠落しているMySQL PDOをインストールする方法

PHP 7 RC3Ubuntu 14.04 + Nginxを使用してWebサーバーをセットアップしようとしています(テスト目的)。

OndřejSurýのubuntu/trusty64およびPHP 7 RC 3を使用してUbuntuをVagrantにインストールしました( https://launchpad.net/~ondrej/+archive/ubuntu/php-7. )。

MySQL PDOをインストールする方法が見つかりません(PHPはPDOクラスを認識しますが、PDO::MYSQL_ATTR_DIRECT_QUERYなどのMySQLに関連するものは認識しません)

Lib php7.0-mysqlがないように見えます(Ondřejの標準php5-mysqlndおよびphp7.0-fpmなどとの類推により)

phpinfo()のセクションPDO

PDO support      enabled
PDO drivers      no value

どうすれば入手できますか?

50
SmxCde

eggyal はコメントで正しいアドバイスをした後、彼のコメントを回答として提供しなかったので、ここに投稿しています:私の場合、モジュールphp-mysqlをインストールする必要がありました。詳細については、質問の下のコメントを参照してください。

3
SmxCde

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ファイルを編集し、/etc/php/[version]/Apache2/php.iniにあり、pdo_mysqlを検索します

;extension=pdo_mysql.so

これに変更

extension=pdo_mysql.so

ファイルを保存し、Apacheを再起動します

service Apache2 restart

phpinfo()で利用できることを確認してください

100
Angel115

最初にphp-mysqlをインストールします

Sudo apt-get install php7.0-mysql

その後、モジュールを有効にします

Sudo phpenmod pdo_mysql

apacheを再起動します

Sudo service Apache2 restart 
22
StateLess

まず、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

; ...

これがお役に立てば幸いです。

4
  1. pHP 7のソースコードをダウンロードして展開します。
  2. ターミナルを開きます
  3. ext/mysqliディレクトリまで泳ぐ
  4. コマンドを使用:

    phpize

    。/構成、設定

    make

    make install(rootとして)

  5. php.iniファイルでextension = mysqli.soを有効にします
  6. できた!

これは私のために働いた

3
micl

Windowsを使用していて、phpフォルダーがPATHにない場合は、php.iniに絶対ディレクトリを設定しています。

例えば:

extension_dir = "C:/php7/ext"

コメント解除

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Apache2.4を再起動すると、動作するはずです。

役に立てば幸いです。

3
user1455180

私は、ほとんど同じ問題を抱えていました。 PDOが有効になっていることがわかりましたが、使用可能なドライバーがありませんでした(PHP 7-RC4を使用)。有効にしたものにphp_pdo_mysql拡張機能を追加することで、問題を解決することができました。

お役に立てれば!

2
jgadrow

同じ問題があり、実際に正しいファイル名でphp.iniの拡張子を有効にすることで解決しました。 php_pdo_mysql.soとしてリストされていましたが、/ lib/php/modules内のモジュール名はpdo_mysql.soと呼ばれていました。

そのため、php.iniファイルから接頭辞「php_」を削除してから、httpdサービスを再起動すると、魅力的に機能しました。

私はArchを使用しているため、パス名とサービスはディストリビューションによって異なる場合があることに注意してください。

1
Xorifelse

私は答えから始め、次にコンテキストを修正します注:この修正は上記で記録されました。グーグルの人のためにそれを再統計しています。

  1. Php 7のソースコードをダウンロードして抽出します。
  2. ターミナルを開きます
  3. ext/pdo_mysqlディレクトリに泳ぎます
  4. コマンドを使用する:

    phpize

    。/構成、設定

    make

    make install(rootとして)

  5. 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 update and I get this:Err:14 http://ppa.launchpad.net/ondrej/Apache2/ubunt cosmic/main AMD64 Packages 404 Not Found Err:15 http://ppa.launchpad.net/ondrej/php/ubunt 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の問題を取得し、それを回避しようとしました...そしてあなたはアイデアを得る...モールを叩きます。私はあきらめて、コンパイルできるかどうかを確認し、最初に答えを見つけました。

なぜ私がそんなに書いたのか不思議に思われるかもしれません。だれでもグーグルでこのソリューションを見つけることができます(私を含む!)。

1
user3912517
['class' => 'yii\db\Connection',
    'dsn' => 'mysql:Host=localhost:3306;dbname=testdb',
    'username' => 'user',
    'password' => 'password',
    'charset' => 'utf8',]

簡単です。ホスト名とともにポート番号を指定し、サーバーが実行されているmysql.sockphp.iniファイルパスにデフォルトのsockパスを設定するだけです。

0
Dhanush-uc