Raspberry Pi & Python 開発ブログ ☆彡

Raspberry PiとPythonの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

PHP(Webページ)からGPIOを制御する方法(その2)

前回はPHPからGPIOを制御する方法を試したのですが、うまく動作しませんでした。今回はその解決方法を記載したいと思います。

 

Apacheのエラーログの確認

PHPのWebページでstartボタンを押すと、pythonコードが実行され、LEDが光るようにコードを作成したつもりですが、LEDが全く光りません。まずは状況を確認するため、apacheのエラーログを確認しました。エラーログは下記の場所にあります。

/var/log/apache2/error.log

開いてみると

RuntimeError: No access to /dev/mem.  Try running as root!

とエラーが出ています。GPIOにアクセスできない、ルート権限で実行しろっという内容です。

 

apacheユーザーに権限付与

いろいろと調べてみると下記のコマンドでapacheユーザー(www-data)をgpioグループに追加し、apacheユーザーに権限を付与する必要がありそうです。

sudo usermod -a -G gpio www-data

 

再度、動作確認

上記のコマンド実行後、再度PHPで作成したWebページのStartボタンを押してみると、LEDが光っています。Stopボタンを押すと、LEDが消灯します。問題を解決して、ハードウェアが動作するとうれいしですね!

 

少し苦労しましたが、これでPHPからpythonコードを実行して、GPIOを制御することが可能になりました。WebページからGPIOが制御できますので、パソコンだけでなくスマートフォンからでもWebページを開いてGPIOを操作することができます。

 

GPIOを使用してセンサーやカウンタ等でハードウェアの情報を取得し、スマホでWebページを開きハードウェアの情報を確認する、ということがこれでできるようになります。いま流行りのIoTがRaspberry Piでもできそうです。