web-dev-qa-db-ja.com

MySQL LinuxサーバへのPDOドライバのインストール

私は、クエリをパラメータ化してデータベースにHTMLを安全に保存するために、PDOを使用するようにコードを変更することを提案しました。

まあ、これが主な問題です。

  1. 私は http://php.net/manual/en/ref.pdo-mysql.php を見ました、そして、私は私がその$ ./configure --with-pdo-mysql文字列を置くべきである場所を本当に得ません...

  2. 私が構築しているサイトは実際には1ページにPDOしか必要としません。私はそれを書き直すことを検討するかもしれませんが、それはしばらく時間がかかるでしょうし、私はすぐにページを実行する必要があるので、MySQLを完全にオフにすることはできません。 PDOをインストールしても、mysql_*ハンドラを使用することはできますか?

問題のサーバーはPHPバージョン5.4.6-1ubuntu1およびApache/2.2.22(Ubuntu)を実行しています。問題があれば、phpMyAdminデータベースも実行しています。

96
Yuri Scarbaci

Ubuntuでは、Sudo apt-get install php5-mysqlを使ってaptから必要なPDOパーツをインストールできるはずです。

PDOとmysql_を同時に使用することに制限はありません。 DBには2つの接続を作成する必要があります。1つはmysql_で、もう1つはPDOを使用します。

177

それは良い質問ですが、私はあなたがただあなたが読んだものを誤解していると思います。

PDOをインストールする

あなたがあなた自身のPHPコードをコンパイルするならば、./config --with-pdo-mysqlはあなたが置く必要があるものだけです。パッケージマネージャを使ってインストールする場合は、Jany Hartikainenが提供するコマンドラインを使用する必要があります。Sudo apt-get install php5-mysqlおよびSudo apt-get install pdo-mysql

Mysql_との互換性

Mysql_は実際には推奨されていませんが、どちらも独立しています。 PDOを使用する場合、mysql_は関係ありません。また、mysql_を使用する場合、PDOは必要ありません。

コードのどの行も変更せずにPDOを無効にしても、問題はありません。しかし、PDOを使って接続してクエリを書くようになってから、それを維持してmysql_をあきらめなければなりません。

数年前、MySQLチームは MySQLiに移行 にスクリプトを公開しました。カスタマイズできるかどうかはわかりませんが、正式なものです。

24
artragis

基本的にJani Hartikainenからの答えは正しいです!私は彼の答えを支持した。私のシステム(Ubuntu 15.04に基づく)で欠けていたものは私のphp.iniでPDO拡張を有効にすることでした

extension=pdo.so
extension=pdo_mysql.so

ウェブサーバーを再起動します(例: "Sudo service Apache2 restart") - >すべての罰金:-)

現在アクティブなphp.iniファイルがどこにあるのかを見つけるには、phpinfo()またはその他のヒントをここから使用できます。 ファイル/

15
Tobias Gaertner

最初にコマンドSudo apt-get install php*-mysqlを実行して必要なPDOパーツをインストールしてください。

extension=pdo.so
extension=pdo_mysql.so

あなたの.iniファイルで、コマンドであなたのサーバを再起動してください

Sudo service Apache2 restart
7
Avnish alok
  1. PDOはPHP Data Objectを表します。
  2. PDO_MYSQLは、データオブジェクト(MySQLデータベース)にアクセスするdataobject(データベース)とユーザー入力( "分離コード"と呼ばれるユーザーインターフェイスの下の層)との間のインターフェイスを実装するドライバです。

これを使用する目的は、ユーザーインターフェイスとデータベースの間に追加のセキュリティ層を実装することです。このレイヤを使用することで、データをデータ構造に挿入する前にデータを正規化することができます。 (首都は首都で、先頭または末尾のスペースはなく、すべての日付は適切に形成されています。)

しかし、これにはあなたが気付いていないかもしれないニュアンスがいくつかあります。

まず第一に、これまでのところ、あなたはおそらくすべてのクエリをURLに似たようなもので書いていて、あなたはURL自体を使ってパラメータを渡していました。 PDOを使用すると、これらすべてはユーザーインターフェイスレベルで行われます。ユーザーインターフェイスは、ボールをPDOに渡し、ボールを7つのTOUCHDOWN用にデータベースに渡します。彼は7つのポイントを取得します。URLを介して情報を渡すよりもはるかに安全だからです。 。

データ層を使用して、サイトを SQLインジェクション に強化することもできます。データベース自体と対話する唯一の「プレーヤー」であるこの中間層を使用することによって、これがはるかに安全である可能性があることを確認できると確信しています。データベースへのデータ層へのインターフェース、データベースへのデータベースへのデータ層、インターフェースへのデータ層へのインターフェース。

そして:

あなたのコードを書いている間にベストプラクティスを実行することによってあなたは結果にもっと幸せになるでしょう。

追加の情報源:

再:MySQLのURL URLのドットネット/手動/ ja/refドットpdo - mysqlドットphp

再:3層アーキテクチャ - あなたのアプリケーションにセキュリティを追加する https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/

UMLを使ったオブジェクト指向設計再教育についてもっと知りたいのなら、これは市場で最高の本です。GradyBoochはUMLの父親でした http://dl.acm.org/citation.cfm) ?id = 291167&CFID = 241218549&CFTOKEN = 82813028

またはbitmonkeyで確認してください。そこにグループがあります私はあなたがたくさん学ぶことができると確信しています。

>

用語が実際に何を意味するのか知っていれば、何も学ぶ必要はありません。

>

7
Elaine Ossipov

MySQLと一緒にCakePHP Dockerコンテナが必要な場合は、その目的のためにDockerイメージを作成しました。設定を心配する必要はありません。それだけでうまくいきます!

Ubuntuベースのイメージにインストールする方法は次のとおりです。

https://github.com/marcellodesales/php-Apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8

RUN docker-php-ext-install mysql mysqli pdo pdo_mysql

アプリケーションの構築と実行は、2ステップのプロセスです(あなたがアプリケーションの現在のディレクトリにいることを考えると)。

$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp
0