PHP 7 RC3
でUbuntu 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
どうすれば入手できますか?
eggyal はコメントで正しいアドバイスをした後、彼のコメントを回答として提供しなかったので、ここに投稿しています:私の場合、モジュールphp-mysql
をインストールする必要がありました。詳細については、質問の下のコメントを参照してください。
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()で利用できることを確認してください
最初にphp-mysqlをインストールします
Sudo apt-get install php7.0-mysql
その後、モジュールを有効にします
Sudo phpenmod pdo_mysql
apacheを再起動します
Sudo service Apache2 restart
まず、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
; ...
これがお役に立てば幸いです。
phpize
。/構成、設定
make
make install(rootとして)
これは私のために働いた
Windowsを使用していて、phpフォルダーがPATHにない場合は、php.iniに絶対ディレクトリを設定しています。
例えば:
extension_dir = "C:/php7/ext"
コメント解除
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
Apache2.4を再起動すると、動作するはずです。
役に立てば幸いです。
私は、ほとんど同じ問題を抱えていました。 PDOが有効になっていることがわかりましたが、使用可能なドライバーがありませんでした(PHP 7-RC4を使用)。有効にしたものにphp_pdo_mysql拡張機能を追加することで、問題を解決することができました。
お役に立てれば!
同じ問題があり、実際に正しいファイル名でphp.iniの拡張子を有効にすることで解決しました。 php_pdo_mysql.soとしてリストされていましたが、/ lib/php/modules内のモジュール名はpdo_mysql.soと呼ばれていました。
そのため、php.iniファイルから接頭辞「php_」を削除してから、httpdサービスを再起動すると、魅力的に機能しました。
私はArchを使用しているため、パス名とサービスはディストリビューションによって異なる場合があることに注意してください。
私は答えから始め、次にコンテキストを修正します注:この修正は上記で記録されました。グーグルの人のためにそれを再統計しています。
コマンドを使用する:
phpize
。/構成、設定
make
make install(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 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の問題を取得し、それを回避しようとしました...そしてあなたはアイデアを得る...モールを叩きます。私はあきらめて、コンパイルできるかどうかを確認し、最初に答えを見つけました。
なぜ私がそんなに書いたのか不思議に思われるかもしれません。だれでもグーグルでこのソリューションを見つけることができます(私を含む!)。
['class' => 'yii\db\Connection',
'dsn' => 'mysql:Host=localhost:3306;dbname=testdb',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',]
簡単です。ホスト名とともにポート番号を指定し、サーバーが実行されているmysql.sock
のphp.ini
ファイルパスにデフォルトのsockパスを設定するだけです。