Web Server Raspberry Pi

APACHEのデフォルトユーザ www-dataでは権限によりPHPを実行出来ない場合の解決方法

Raspberry PiをApache httpサーバとして、ブラウザからPHP内のPythonコードを走らせてGPIOを動かそうとすると実行出来ないことが発生しました。この記事ではその解決方法を紹介しています。

原因

RaspbainなどのDebian系のLinuxでは、ApacheがPHPを実行する際の実行ユーザはwww-dataとなっています。このwww-dataというユーザ権限では、GPIOを動かすことが出来ないことが原因のようです。

対策

Apache2がPHPを実行する際の実行ユーザを、Raspbianのデフォルトユーザであるpiに変更すると、PHP経由でもGPIOをコントロールすることが出来ました。次のように/etc/apache2/envvarsを編集します。

/etc/apache2/envvarsの編集

Apache2がPHPを実行する際の実行ユーザは、/etc/apache2/envvars に設定されています。ここのwww-dataの箇所をpiに変更します。作業前にバックアップをとっておきましょう。

/etc/apache2/envvarsの書き換え

export APACHE_RUN_USER=www-data→pi
export APACHE_RUN_GROUP=www-data→pi

その後、Apache2を再起動します。

Apache再起動

sudo service apache2 restart

この他の対策として、Apacheのデフォルトの実行ユーザwww-dataに、GPIOを動かす権限を与える方法もあるかと思います。

最後までお読み頂きありがとうございます。

-Web Server, Raspberry Pi