環境
MAC MAMP5.5 PHP7.3.8
PHP
1function dbConnect() { 2 $dsn = 'mysql :dbname = musicfare; host = localhost; charset = utf8'; 3 $user = 'root'; 4 $password = 'root'; 5 $options = array( 6 PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, 7 8 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 9 10 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, 11 ); 12 13 $dbh = new PDO($dsn, $user, $password, $options); 14 return $dbh; 15} 16 17function queryPost($dbh, $sql, $data) { 18 $stmt = $dbh -> prepare($sql); 19 20 $stmt -> execute($data); 21 22 return $stmt; 23} 24 25try { 26 27 $dbh = dbConnect(); 28 29 30 $sql = 'INSERT INTO users (email,password,login_time,create_date) VALUES(:email,:pass,:login_time,:create_date)'; 31 32 $data = array(':email' => $email,':pass' => password_hash($pass,PASSWORD_DEFAULT), ':login_time' => date('Y-m-d H:i:s'), ':create_date' =>date('Y-m-d H:i:s')); 33 34 $stmt = queryPost($dbh, $sql, $data); 35 36 if($stmt) { 37 38 header("Location:mypage.php"); 39 } 40 } catch(Exception $e){ 41 error_log('エラー:'. $e->getMessage()); 42 }
省略していますが、このコードでMYSQLにPDO接続をしようとしたところ、ログで”could not find driver”と出てしまいました。
phpinfo();で確認したところ、
PDO driversにmysqlは含まれておりました。
php.iniには
extension_dir = "/Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/"
と記載されており、
となっておりました。
確認したところ、上記のextension_dirのパス内にpdo_mysql.soのようなファイルはありませんでした。本来はここにextension=pdo_mysql.soのようなものがあり、extension_dirのパス内にpdo_mysql.soファイルが存在している必要があると解釈しました。他に考えられる原因はありますでしょうか。
また、もしこの解決法であっていたとしたら、pdo_mysql.soのようなファイルはどのように入手すれば良いのでしょうか。
ちなみに、先日までは接続できていて、PHPやMAMPのアップデート、MACにプリインストールされているPHPからbrewでインストールしたPHPに変えたりなど心当たりが多くて明確な原因はわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/16 09:50
退会済みユーザー
2019/10/16 10:01
退会済みユーザー
2019/10/17 12:59