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

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

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

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

PDO

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

PHP

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

Q&A

解決済

3回答

31843閲覧

CentOSにPDOをインストール

terashamo

総合スコア20

CentOS

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

PDO

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

PHP

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

0グッド

2クリップ

投稿2016/04/09 04:36

###前提・実現したいこと
CentOSでPHPのプロジェクトを動かしてみたいと思っております。
CentOS7 PHP5.6.20 Apache2.4.6 mysql5.6.29

###発生している問題・エラーメッセージ
MAMPの環境下では動いていたのですが、CentOS上で動かすと

Class 'PDO' not found in /var/www/shop-neo/common.php on line 8

というエラーが出てしまい

yum install php-pdo

とインストールしようとすると

エラー: パッケージ: php-pdo-5.4.16-36.el7_1.x86_64 (base) 要求: php-common(x86-64) = 5.4.16-36.el7_1 インストール: php-common-5.6.20-1.el7.remi.x86_64 (@remi-php56) php-common(x86-64) = 5.6.20-1.el7.remi 利用可能: php-common-5.4.16-36.el7_1.x86_64 (base) php-common(x86-64) = 5.4.16-36.el7_1 問題を回避するために --skip-broken を用いることができます。 これらを試行できます: rpm -Va --nofiles --nodigest

というエラーが出てしまいます。

色々と知識不足で申し訳ないのですが、何かわかるかたがいらっしゃいましたらよろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

PHPのエクステンションはバージョンごとに違いますので、PHP本体をremiから入れた場合にはエクステンションもremiから入れる必要があります。

bash

1# 正確なコマンドはバージョンで違うかもしれません 2yum --enablerepo=remi,epel install php56-php-pdo

投稿2016/04/09 04:49

maisumakun

総合スコア145183

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

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

terashamo

2016/04/09 05:00

回答ありがとうございます! 無事、上記コマンドでインストールすることができました! が、いざ動かすと Class 'PDO' not found in /var/www/shop-neo/common.php on line 8 と、同様のエラーが出てしまいます。 PDOをインストールするだけではダメなのでしょうか?
maisumakun

2016/04/09 05:47

php.iniで読み込む必要があるのと(たぶんインストールで読み込まれるはずですが)、mod_phpならApacheの、PHP-FPMならFPMの再起動が必要となります。
terashamo

2016/04/09 06:05

Apacheの再起動は試したのですが、変わらずエラーが出てしまいました。 php.iniで読み込むというのはタイムゾーンの設定のようにどこか書き換える必要があるのでしょうか?
yodel

2016/04/09 06:14

pdo_mysqlがインストール成功している前提で、 php -i | grep pdo_mysql で確認する。 /etc/php.ini もしくは /etc/php.d/pdo_mysql.ini に pdo_mysqlを読み込む下記の記述されているか確認する。 (無いならどちらかに追記する) extension=pdo_mysql.so
terashamo

2016/04/09 06:33

コメントありがとうございます。 pdo_mysqlどころかpdoもインストールできていないようでした・・・ 再度調べてインストールからやってみます・・・
terashamo

2016/04/09 06:44

申し訳ありません、インストールできていました (再度インストールしようとしたら最新ですと出ました) php -i | grep pdo_mysqlとすると PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0 と出るのですが、タイムゾーンの設定をしていないとまずいのでしょうか・・?
guest

0

remiリポジトリ利用については詳しくないのですが、
/opt/remi/php56/enable を実行することでパスが通せるようです。

extensionについては、他と同様に下記を追記して
Apache再起動で読み込まれます。
(PHPが複数入っていたりパスが誤っていたりすると読み込めないかもしれません。)
extension=pdo.so
extension=pdo_mysql.so

投稿2016/04/09 13:06

yodel

総合スコア508

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

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

terashamo

2016/04/09 13:38

/opt/remi/php56/enableを実行してみたところ許可がないと言われてしまいました・・・ 一応、php.iniに下記を書き加えてみました。 extension=pdo.so extension=pdo_mysql.so
terashamo

2016/04/10 03:07

長々とおつきあいさせてしまい申し訳ありません。 今回、わからないことが多すぎて皆様にご迷惑をかけてしまいました。 当初の目的のphp-pdoのインストールは完了できましたのでクローズさせていただきます。
yodel

2016/04/10 04:10

yumでやるときは、yum install php php-pdo pdo-mysql で入れていて、それで拡張モジュール設定もされるはずだと思います。 今度remiリポジトリ指定で環境作ってみます。。 remiでphpのバージョン指定して入れて、拡張モジュールの設定が効いていないのは、 他にPHPが入っていてそっちの設定を参照しているか、そもそも設定が入っていないのか どっちかだと思いました。 最初から必要なものだけをインストールし直したら上手くいくかもしれません。
guest

0

maisumakunさんの回答に投稿してしまってすみません。
タイムゾーンのエラーは別問題です。
拡張モジュールの設定がうまく行っていないのだと思います。
phpinfo(); で確認拡張モジュールの有無は出来ます。

find / -name pdo* で下記のような拡張モジュールが入っているか確認出来ます。
/usr/lib64/php/modules/pdo_mysql.so
/usr/lib64/php/modules/pdo.so

phpで読み込む為には、php.iniまたは、init.d配下に
extensionを宣言してあげてください。

投稿2016/04/09 07:13

yodel

総合スコア508

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

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

terashamo

2016/04/09 07:23

回答ありがとうございます。 上記コマンドで確認してみましたところ /opt/remi/php56/root/usr/include/php/ext/pdo /opt/remi/php56/root/usr/lib64/php/modules/pdo.so /opt/remi/php56/root/usr/lib64/php/modules/pdo_sqlite.so /opt/remi/php56/root/usr/lib64/php/modules/pdo_mysql.so と表示されました。 本当に知識不足で申し訳ないのですが、php.iniを編集して、どこかに extension=pdo.so のように書き込めば良い、ということでしょうか?
yodel

2016/04/09 11:36

私なら、extension周りを編集設定して読み込めるか確認してみます。 以下の情報を見つけたので、mysqlndも入れてみれば動くかもしれません。 PDOでMySQLに接続するには、pdoモジュール、mysqlndモジュールが別途必要となります。以下のコマンドを実行して、pdoモジュール、mysqlndモジュールのインストールを行います。 yum --enablerepo=remi,epel install php56-php-pdo php56-php-mysqlnd
terashamo

2016/04/09 12:35

ありがとうございます、コマンドを試してみたところ パッケージ php56-php-pdo-5.6.20-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php56-php-mysqlnd-5.6.20-1.el7.remi.x86_64 はインストール済みか最新バージョンです と出ました。 重ねて申し訳ありませんが、extension周りを編集設定というのがわからず・・・ vi php.ini で編集モードで開いてみたのですが、extensionで検索しても複数あり、どこを編集していいのかわかりませんでした。 そもそも見ているファイルが違うのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問