我知道有類似的問題回答,但我沒有從他們那裏獲得幫助。 因此,Perl的命令:Perl系統命令輸出在從控制檯運行時可見,但在通過瀏覽器運行時不可見CGI
$temp=`/home/pi/spitest/RaspberryPi-mcp3008Spi/tempv1`;
print $temp;
正確顯示程序的輸出tempv1從Linux控制檯上運行時:
[email protected] /var/www/cgi-bin $ ls -la temp.pl
-rwxrwxr-x 1 root root 193 Apr 12 15:09 temp.pl
[email protected] /var/www/cgi-bin $ perl temp.pl
Content-Type: text/plain
<html><body>20.4</body></html>[email protected]
,但是當我運行它,它不會顯示這個特定的輸出我的瀏覽器:
http://192.168.1.102/cgi-bin/temp.pl
output: <html><body></body></html>
我的服務器是lighttpd的和它的用戶和組既www-data。 感覺這是一個許可的事情,但我希望你的意見。
解決方案編輯: 一開始我沒能看到的/ dev/spidev *設備的連接,但現在很明顯,這個問題在那裏(文件權限)。謝謝大家的幫助,對於最初的誤導性信息我很遺憾:
我想從Perl腳本調用的系統命令使用這些spidev *設備與芯片進行通信。當我從CLI(user = pi)調用這個系統命令(應用程序)時,它運行良好,但是當它作爲通過Web服務器(user = www-data)啓動的Perl腳本的一部分執行時,應用程序失敗,顯然是因爲用戶www數據沒有對/ dev/spidev *的訪問權限。
我的工作,周圍是CHOWN在/ dev/spidev *設備www數據,但也許我將不得不尋找一個更清潔的解決方案。
太糟糕的stackoverflow不會讓我發佈這個答案,因爲我的聲望很低。
這兩行是你Perl程序中唯一的東西嗎? – TLP
它有幾個其他的行,但它以「#!/ usr/bin/perl」開頭 –
你可以用'su'來查看www-data並查看是否可以運行該腳本? – TLP