簡體   English   中英

php shell_exec和exec不適用於shell腳本

[英]php shell_exec and exec doesn't work with shell script

所以這是我的代碼,用於樹莓派從raspicam拍攝靜止圖像並將其保存在目錄中,

<?php
  exec('raspistill -n -hf -o /var/www/img/image.jpg --timeout 1');
?>

我已使用-R在該forlder中賦予了所有權和讀取/寫入的權限。 所以我在/ var / www中的ls -al是這個

drwxr-xr-x  3 www-data www-data 4096 Jun 19 08:05 .
drwxr-xr-x 12 root     root     4096 Jun 19 05:54 ..
-rwxrwxrwx  1 www-data www-data   74 Jun 19 08:30 getImg
drwxrwxrwx  2 www-data www-data 4096 Jun 19 09:21 img
-rw-r--r--  1 root     root       70 Jun 19 10:07 index.php

getImg是我嘗試將腳本作為shell_exec('/bin/bash ./getImg');類的文件運行的腳本shell_exec('/bin/bash ./getImg'); 那也不起作用。

我已經添加了/ bash / bin並試圖在不使用腳本文件的情況下運行腳本,但這沒有得到結果。

但是,當我嘗試在終端中運行php文件時,它將按通常的方式創建映像。 所以我認為這肯定是一個權限問題,但是該權限我還應該怎么辦? 我已授予目錄所有權限。

編輯

因此,我找到了解決方法。 由於我不知道問題的原因,因此我不會將其標記為答案,但請投票將其顯示在頂部。

現在,我使用cgi腳本執行腳本。 我在/usr/lib/cgi-bin/創建了一個shell腳本

#!/bin/bash
echo "Content-type:text/html\n"
sudo raspistill -vf -n -o /var/www/img/image.jpg --timeout 1200 --metering matrix
echo "Status: 204"

我將其保存為捕獲並使其可執行,但是對權限沒有執行任何操作。

sudo chmod +x capture

現在,當我打開鏈接http://192.168.1.85/cgi-bin/capture ,瀏覽器仍然會向我顯示500條內部服務器錯誤消息。 但是,仍然會創建圖像。

現在,我需要修復500個內部服務器錯誤。

[我將其添加為評論,但沒有足夠的要點]

  • 如果使用可選參數$ output和$ return_var捕獲輸出並返回值,您會得到什么?

    字符串exec(字符串$ command [,數組&$ output [,int&$ return_var]])

  • 您的命令是否依賴於以用戶身份而非環境數據運行時可能可用的環境變量? (您可以使用env命令進行檢查)

  • 如果將用戶切換到www-data后通過終端運行它,它仍然可以工作嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM