色々調べた結果どーしても分からず技術者の方に教えていただきたいです
やりたいこと
ラズパイにapcheサーバーを立て、配下フォルダに
PHPとptyhonを入れてあります
phpは、pytonで生成されたファイルを使い表示と操作用
ptyhonは、GPIOピン番号の0,1データを受信してファイル生成
それぞれ作り、どちらとも問題なく動きましたので
いざ、WEBからボタンを押して、AJAX経由で
pythonを実行しようとしたら
実行されません
PHP
1if($_REQUEST['p']){ 2 $cmd = "export LANG=ja_JP.UTF-8; python /home/pi/web_severs/GPIO_TEST/gpio_test.py"; 3 $re = exec($cmd); 4 echo($re); 5 exit(); 6}
python
1#! /usr/bin/env python3 2#-*- coding: utf-8 -*- 3 4# GPIOを制御するライブラリ 5import wiringpi 6# タイマーのライブラリ 7import time 8# CSVのライブラリ 9import csv 10#ファイル削除のライブラリー 11import os 12 13path_w = '/home/pi/web_severs/GPIO_TEST/test.txt' 14ID = 'test' 15# ボタンを繋いだGPIOの端子番号 16button_pin = [2,3,4,14] # 3ピン端子 17 18# GPIO初期化 19wiringpi.wiringPiSetupGpio() 20# GPIOを出力モード(1)に設定 21 22# whileでtrueを条件式で書くと無限ループになる 23while True: 24 if os.path.exists(path_w): 25 os.remove(path_w) 26 else: 27 for num in range(4): 28 wiringpi.pinMode( button_pin[num], 0 ) 29# 端子に何も接続されていない場合の状態を設定 30# 3.3Vの場合には「2」(プルアップ) 31# 0Vの場合は「1」と設定する(プルダウン) 32 wiringpi.pullUpDnControl( button_pin[num], 2 ) 33 # GPIO端子の状態を読み込む 34 # ボタンを押すと「0」、放すと「1」になる 35 # GPIOの状態が0V(0)であるか比較 36 if( wiringpi.digitalRead(button_pin[num]) == 0 ): 37 # 0V(0)の場合に表示 38 with open(path_w,mode='a') as f: 39 f.write(ID + '_1' + '\n') 40 else: 41 # 3.3V(1)の場合に表示 42 with open(path_w,mode='a') as f: 43 f.write(ID + '_0' + '\n') 44 time.sleep(1)
その前にテストで PHPから
print('test')みたいな簡単な出力を
試したらPHPに問題なく出力されたので
いける!と思ったのですが・・・
exec関数でスクリプト実行だと思ったんですが
そもそもやり方が違うのか・・
逆になんで簡単なスクリプトは実行できたんだ・・と迷宮入りです。
ご教授を宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー