・2017/08/11
Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法
(Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法)
Tags: [Raspberry Pi], [電子工作]
● Raspberry Pi 3 Model Bを遂に購入
Raspberry Pi3 Model B RPI2 RPI3
大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。
※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。
※ 2019/06/20から Raspbian OSは Raspbian Stretchから Raspbian Busterに変わりました。
Download Raspbian for Raspberry Pi
ちなみに、歴代のバージョンと名称は
Debian | コードネーム | 年月 | 備考 | (参考)Ubuntuでの該当名称 |
Debian 11 | Bullseye | 2021/08/14~ | 2021/11からラズパイにリリース | Focal Fossa 20.04 LTS ? |
Debian 10 | Buster | 2019/06/20~ | 2019/06からラズパイ4対応 | Bionic 18.04 LTS |
Debian 9 | Stretch | 2017/08/16~ | 2018/03からラズパイ3B+対応 | Xenial 16.04 LTS |
Debian 8 | Jessie | 2015~ | 2016/02からラズパイ3対応 | Trusty 14.04 LTS |
Debian 7 | Wheezy | 2013~2016 | | |
Debian 6.0 | Squeeze | 2011~2014 | | |
Debian GNU/Linux 5.0 | Lenny | 2009~2012 | | |
●ラズパイで Webサーバを構築する方法
使用した Raspbian OSのバージョン
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.1 (stretch)
Release: 9.1
Codename: stretch
●おまけ: 軽量な Webサーバ Lighttpdをラズパイにインストールする方法
下記にまとめました。
・2017/08/11
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築
●おまけ: Apache2 Webサーバをラズパイにインストールする方法
下記にまとめました。
・2017/08/11
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築
●おまけ: 軽量な Webサーバ nginxをラズパイにインストールする方法
下記にまとめました。
・2017/08/11
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)
● nginxで MySQLと PHP PDOをインストール
あらかじめ Webサーバと PHPを使える様に設定しておきます。
php-mysqlと mysql-serverをインストールする。
# pdo_mysql PDO Driver for MySQL enabled
# Client API version mysqlnd 5.0.12-dev - 20150407
sudo apt-get -y install php-mysql
Webサーバを再起動します。
# restart Apache2 Web server service
sudo service apache2 restart
# restart nginx Web server service
sudo service nginx restart
# restart Lighttpd Web server service
sudo service lighttpd restart
mysql-server本体をインストールします。
# MySQL MariaDB Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
sudo apt-get -y install mysql-server
● PHPの PDOのインストール状態を phpinfoで確認する。
# おなじみの phpinfoの PHPサンプルです。
sudo nano /var/www/html/phpinfo.php
<?php phpinfo(); ?>
パソコンでブラウザを開いて、URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/phpinfo.php
・PHPを Webサーバで実行する。PHP編
・PDO - PDO support - PDO drivers - mysql, sqlite
・pdo_mysql - PDO Driver mysqlnd 5.0.12-dev - 20150407
● PHPの PDOで MySQLを操作する方法
MySQLにユーザーを登録する
MySQL Username: hoge_user
MySQL Password: hoge_pass
MySQL Database: HOGE_DB
User Privileges: GRANT ALL PRIVILEGES
# sudoで rootユーザーで mysqlにログインする
$ sudo mysql -u root
# Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
# hoge_userを作成する
MariaDB [(none)]> CREATE USER hoge_user;
# CREATE USER hoge_user IDENTIFIED BY [PASSWORD] 'hoge_pass';
# はエラーになります。
# hoge_userのパスワード hoge_passを設定する
MariaDB [(none)]> SET PASSWORD FOR 'hoge_user'=password('hoge_pass');
# 作成したユーザー情報を確認する
MariaDB [(none)]> SELECT user,host,password FROM mysql.user;
# +-----------+-----------+-------------------------------------------+
# | user | host | password |
# +-----------+-----------+-------------------------------------------+
# | root | localhost | |
# | hoge_user | % | *1234567890123456789012345678901234567890 |
# +-----------+-----------+-------------------------------------------+
# hoge_userにデータベース HOGE_DBに対する全ての権限を付与する
# ALL PRIVILEGES
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `HOGE_DB`.* TO 'hoge_user' IDENTIFIED BY 'hoge_pass';
# hoge_userにデータベース HOGE_DBを操作するだけの権限を付与する
# operate TABLE only
# MariaDB [(none)]> GRANT select,update,insert,delete ON `HOGE_DB`.* TO 'hoge_user' IDENTIFIED BY 'hoge_pass';
# hoge_userの権限を確認する
MariaDB [(none)]> SHOW GRANTS FOR 'hoge_user';
# hoge_userを削除する
# MariaDB [(none)]> drop user 'hoge_user'@'%';
● PHPの MySQL PDOのサンプルプログラム。
# http://{serverip}/hoge_pdo.php
sudo nano /var/www/html/hoge_pdo.php
<?php
$servername = "localhost";
$username = "hoge_user";
$password = "hoge_pass";
try {
echo "==== PDO<br>";
$pdo = new PDO("mysql:host=$servername", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO successfully<br><br>";
echo "==== CREATE DATABASE<br>";
$sql = "CREATE DATABASE IF NOT EXISTS HOGE_DB";
$pdo->exec($sql);
echo "CREATE DATABASE successfully<br><br>";
echo "==== use DB<br>";
$sql = "use HOGE_DB";
$pdo->exec($sql);
echo "use DATABASE successfully<br><br>";
echo "==== CREATE TABLE<br>";
$sql = "CREATE TABLE IF NOT EXISTS HOGE_TABLE (
HOGE_ID int(11) AUTO_INCREMENT PRIMARY KEY,
HOGE_TEXT varchar(32) NOT NULL)";
$pdo->exec($sql);
echo "CREATE TABLE successfully<br><br>";
echo "==== SELECT<br>";
$sql = "SELECT * FROM HOGE_TABLE";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
print($result['HOGE_ID']);
print($result['HOGE_TEXT'].'<br>');
}
echo "SELECT successfully<br><br>";
echo "==== DELETE<br>";
$sql = "DELETE FROM HOGE_TABLE WHERE HOGE_ID = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 3, PDO::PARAM_INT);
$stmt->execute();
echo "DELETE successfully<br><br>";
$sql = "DELETE FROM HOGE_TABLE WHERE HOGE_ID = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 5, PDO::PARAM_INT);
$stmt->execute();
echo "DELETE successfully<br><br>";
echo "==== SELECT<br>";
$sql = "SELECT * FROM HOGE_TABLE";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
print($result['HOGE_ID']);
print($result['HOGE_TEXT'].'<br>');
}
echo "SELECT successfully<br><br>";
echo "==== INSERT 1<br>";
$sql = "INSERT INTO HOGE_TABLE (HOGE_ID, HOGE_TEXT) VALUES (:ID, :TEXT)";
$stmt = $pdo -> prepare($sql);
$id_val = 5;
$hoge_text_val = "HOGE_VAL_5";
$stmt->bindParam(':ID', $id_val, PDO::PARAM_INT);
$stmt->bindParam(':TEXT', $hoge_text_val, PDO::PARAM_STR);
$stmt->execute();
echo "INSERT INTO 1 successfully<br><br>";
echo "==== INSERT 2<br>";
$stmt = $pdo -> prepare($sql);
$stmt->bindValue(':ID', 3, PDO::PARAM_INT);
$stmt->bindValue(':TEXT', "HOGE_PDO_3", PDO::PARAM_STR);
$stmt->execute();
echo "INSERT INTO 2 successfully<br><br>";
echo "==== SELECT<br>";
$sql = "SELECT * FROM HOGE_TABLE";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
print($result['HOGE_ID']);
print($result['HOGE_TEXT'].'<br>');
}
echo "SELECT successfully<br><br>";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$pdo = null;
?>
● http://{serverip}/hoge_pdo.php
==== PDO
PDO successfully
==== CREATE DATABASE
CREATE DATABASE successfully
==== use DB
use DATABASE successfully
==== CREATE TABLE
CREATE TABLE successfully
==== SELECT
3HOGE_PDO_3
5HOGE_VAL_5
SELECT successfully
==== DELETE
DELETE successfully
DELETE successfully
==== SELECT
SELECT successfully
==== INSERT 1
INSERT INTO 1 successfully
==== INSERT 2
INSERT INTO 2 successfully
==== SELECT
3HOGE_PDO_3
5HOGE_VAL_5
SELECT successfully
Tags: [Raspberry Pi], [電子工作]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る
Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る
Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト
Raspberry Piで APIモックサーバー JSON Serverを動かしてみるテスト
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)
Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法
ラズパイ3で WordPressをインストールする方法
Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法
ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法
Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法
Raspbian Jessieで Postfix Mail serverを Gmailの SMTPを中継サーバとして設定する方法
Gitでリモートにプッシュした内容を完全に無かった事にする方法
いわゆる Gitでやらかした時に使える最強奥義 git reset --hard HEAD~; git push -f
Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法
ラズパイに Bonjourサービスを入れて IPアドレスが分からなくてもホスト名で簡単に接続する方法
Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder
DHCPで自動で IPアドレスが割り当てられる場合に、ワンボードマイコンの IPアドレスを調べる場合に便利
Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介
対 DoS攻撃用の Apache2モジュール mod_evasive、mod_dosdetector、mod_limitipconn、fail2ban等の紹介
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ
ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳
ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core
オレンジパイはラズパイよりもコスパは良いが情報が無いので利用者側に一定のスキルが必要
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2017 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_php_pdo_mysql/