Saya baru-baru ini mengatur python untuk bekerja dengan lighttpd via CGI (lihat di sini ). Tetapi begitu saya memasukkan RPi.GPIO , skrip berhenti dieksekusi (saya berasumsi karena tidak ada HTML yang dihasilkan), tetapi tidak ada keluaran kesalahan ke log kesalahan ( /var/log/lighttpd/error.log
).
gpio.py
import RPi.GPIO as GPIO
print "<html>"
print "\t<head>"
print "\t\t<title>GPIO</title>"
print "\t</head>"
print "\t<body>"
print "\t\t<p>"
print "\t\t\tGPIO #17 status: "
print "\t\t</p>"
print "\t</body>"
print "</html>"
Mengapa skrip tidak dieksekusi? Apakah karena izin? Tentunya, termasuk perpustakaan seharusnya tidak memerlukan izin khusus? Mengapa tidak ada output kesalahan baik di skrip atau di log kesalahan?
import RPi.GPIO as GPIO
sebenarnya membutuhkan hak akses root! Sekarang saya kira saya perlu menjalankan lighttpd untuk dijalankan sebagai root (ini hanya proyek rumahan).Jawaban:
Anda dapat mencoba menambahkan sebelum 'impor RPi.GPIO':
Mungkin membantu untuk mendiagnosis kesalahan.
Dan tambahkan baris ini sebelum output html Anda:
Lihat http://docs.python.org/library/cgi.html
sumber
Setelah mengikuti saran dari okertanov, saya menemukan bahwa Anda tidak dapat benar-benar menggunakan
RPi.GPIO
skrip python CGI karena memerlukan akses root. Saya mengatasi masalah dengan memanggilgpio
aplikasi baris perintah yang disertakan sebagai bagian dari WiringPi , ini dapat dipanggil dari akun non-root.sumber
#
berarti komentar dengan PythonGunakan saja
Sekarang Anda harus menyelesaikan masalah izin
sumber
Tutorial ini merekomendasikan untuk membuat salinan khusus Python dan memberikannya hak istimewa pengguna root, seperti:
Dan kemudian, untuk membuat CGI Anda, buka
sudo nano /etc/lighttpd/lighttpd.conf
dan temukan di mana pun Anda mengarahkan.py
file dan ubah/usr/bin/python/
ke yang baru/usr/bin/pythonRoot
/sumber