はじめまして、白猫です。
初めてLinux+PHPの環境を作成しており、PHPからMySQLに接続できません。
LinuXのコマンドやエラーがよく分からず調べながら進めていましたが、
手詰まりになってしまったのでご教授頂きたいです。
またteratailも初めてで至らないところがあると思いますがよろしくお願いします。
前提・実現したいこと
PHPからPDOを使用してMySQLに接続したいです。
今の構築した環境は大きく変えず**「pdo_mysql」**をインストールして接続できるようになれば理想です。
発生している問題・エラーメッセージ
**「could not find driver」**ドライバーが見つかりませんとエラーになります。
Fatal error: Uncaught PDOException: could not find driver in /var/www/html/public_html/XXX.jp/test.php:35 Stack trace: #0 /var/www/html/public_html/XXX.jp/test.php(35): PDO->__construct('mysql:host=db;d...', 'XXX01', 'XXX01...') #1 {main} thrown in /var/www/html/public_html/XXX.jp/test.php on line 35
試したこと
(1)PDOが入っていないと思い「pecl install pdo_mysql」を実行しましたがエラーになりました。
実行後、https://teratail.com/questions/102645 を見て、apt-getが必要だと知りました。
WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql" WARNING: "pecl/PDO" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo//ext/PDO" ~ make: *** [Makefile:217: pdo.lo] Error 1 ERROR: `make' failed
(2)「apt-get install php7.0-mysql」を実行しましたが、見つからないようでした。
Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package php7.0-mysql E: Couldn't find any package by glob 'php7.0-mysql' E: Couldn't find any package by regex 'php7.0-mysql'
(3)状態を確認するために「phpinfo()」を確認しました。
・PDO(PDO support)には、sqliteしか記載されておりませんでした。
・PHP Creditsには、「MySQL driver for PDO」の記載がありませんでした。
(4)phpMyAdminからは、対象のDB(MySQL)に接続できます。
(5)レンタルサーバー上のPHPから
レンタルサーバーのMySQLには接続できています。
環境
・Linux(WindowsからDockerで環境作成)
・composeにて「php:7.4-apache」「mysql:5.7」「phpmyadmin」の環境を作成
該当のソースコード
<?php // データベース情報 define('DB_DATABASE','XXX01'); define('DB_HOST','db'); define('DB_USERNAME','XXX01'); define('DB_PASSWORD','XXX01'); define('PDO_DSN','mysql:host='.DB_HOST.';dbname='.DB_DATABASE); echo PDO_DSN; // DB接続 $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // エラーをスロー ?>
補足情報(FW/ツールのバージョンなど)
関係ない箇所と思いますが、念のためにその他の変更箇所です。
・apache2の000-default.confを
「DocumentRoot /var/www/html」⇒「DocumentRoot /var/www/html/public_html/XXX.jp」に変更
・htaccessを作成、htaccessに「RewriteEngine On」を記載
・DB接続情報は質問用に書き換えています。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/10 03:19
2022/01/10 05:46