質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

11399閲覧

PHP PDOを使ってDBにアクセスできません。

samso

総合スコア11

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/11/29 02:17

###前提・実現したいこと
サーバー構築しているものです。何度も質問申し訳ありません。
クライアントPCでwebサイトに入力された情報をPHPのPDOを使ってサーバー側PCのDBに送ろうとしているところで問題が発生しております。

###発生している問題・エラーメッセージ
問題は二つありまして、
一つ目は最初に表示させるページ(以下ログインページ)にログイン情報を入力して、ログインボタンを押すとサーバーのMySQLに接続されてログインされるというものです。
ログインボタンを押した際に、ブラウザ上では
「IPアドレス」ページは機能していません。「IPアドレス」では現在このリクエストを処理できません。HTTP ERROR 500
サーバー上のエラーログは、
PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in var/www/html/log-in.php:10\nStack trace;\n#0 /var/www/html/log-in.php(10):: PDO->_construct('mysql:host=loca...', '「MySQLでDBを作ったユーザー名」', 'MySQL Pass', Array)\n#1 {main}\n thrown in /var/www/html/log-in.php on line 10, referer: http://「IPアドレス」/
と出ます。
また、log-in.phpの10行目は
$pdo = new PDO('mysql:host=localhost;dbname=users;charset=utf8','root','NLCpotenz@0902',←9行目
array(PDO::ATTR_EMULATE_PREPARES => false)); ←10行目
二つ目は、ログインページに新規登録へというボタンがあってそのボタンを押すと新規登録画面へ繊維し、新規登録画面で必要な情報を入力し新規登録ボタンを押すと、仕様では新規登録され、ログイン後のトップページに飛ぶようにしているのですが、ブラウザ上で
データベース接続失敗。could not find driver とエラーが出ます。
サーバー上のエラーログは、
AH00170: caught SIGWINCH, shutting down gracefully
AH01232: suEXEC mechanism enabled (wrapeer: /usr/sbin/suexec)
AH01757: generating secret for digest authentication ...
AH02282: No slotmem from mod_heartmonitor
AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
と出ます。
###試したこと
前回質問させていただいた際に、PDOが組み込まれていない可能性がありますと言われたので、yum -y install php-pdo のコマンドを入力してみたところ、入れる前は2つ目の問題も1つめと同じように、HTTP ERROR 500と出ていたのですが、入れた後は上記のようなエラーになりました。
また、htmlファイルを作成したPCでのPHPは5.6...なのですが、サーバー上でのPHPは上にも書いてありますように、5.4.16となっているのでバージョンの違いが原因かもしれないと思い、
http://urashita.com/archives/7715
こちらのサイト様を参考にバージョンアップしようとしたのですが、
rpm -qa | grep remi
を打ったところ何も出なかったので、
yum install remi-release
を打ったところ
No package remi-release available.
Error: Nothing to do
と出たところでお手上げになりました。
###補足情報(言語/FW/ツール等のバージョンなど)
サーバー側PC
CentOS7.2
Apache 2.4.6
PHP 5.4.16
MySQL 5.7.16

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

まず、php -r "phpinfo();" | grep -i pdo のコマンドを入力し、
PDO drivers がpgsql,sqliteのみだったので、
yum install php-pdo_mysql
コマンドを入力したところ、解決しました。
回答してくださった方々ありがとうございました。

投稿2016/12/05 05:58

samso

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PDOExceptionが出ているのだから、PDOはインストール済みですね。

sh

1# yum -y install php-mysqlnd 2# systemctl restart httpd.service

投稿2016/11/29 18:04

編集2016/12/02 19:11
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今回のご質問は

  • PDOのドライバは入れたつもりだけど繋がらない
  • PDOのドライバの入れ方がよくわからない

のどちらでしょうか?

phpinfo()で設定一覧を表示し
PDOセクションに、PDO driversにmysqlが表示されるか確認し
pdo_mysqlセクションに、Client API version が表示されるか確認してください

投稿2016/11/29 02:31

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

samso

2016/11/29 02:36

回答ありがとうございます。質問の内容が分かりにくくて大変申し訳ありません。 PDOのドライバーは入れさせていただきました。 入れる前は、HTTPエラーが出ていたのですが、入れた後はcould not find driver と出ました。 という旨をお伝えしたかったです。 一度、phpinfo()で設定確認したいと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問