簡體   English   中英

PHP exec和shell_exec的問題-Shell腳本執行

[英]Issues With PHP exec & shell_exec - Shell Script Execution

我一直無法運行用於啟動和停止使用腳本在本地計算機上運行的網絡攝像頭服務所需的php腳本。 我在日志中找不到任何內容來指示為什么腳本不起作用。

我承認在PHP方面尤其是服務器端腳本編寫方面存在嚴重的障礙。

環境是運行Nginx且安裝了所有必需的SSH和PHP模塊的Debian Jesse

我已經將www-data添加到sudoers文件中:

    www-data ALL=(ALL) NOPASSWD: /var/www/html/start_webcam.sh

在以下位置為www-data啟用了$ PATH環境:

    /etc/php5/fpm/pool.d/www.conf

Shell腳本位於... / html目錄中,並且可以從終端運行而沒有任何問題。

這是php和shell腳本的代碼:

start_webcam.php:

    <?php
    echo exec('sudo bash /var/www/html/aspirebox/start_webcam.sh 2>&1, $output');
    print_r($output);
    ?>

$ output和print_r之所以存在,是因為這是我根據我在某處發現的帖子嘗試的最后一件事。

start_webcam.sh

    #!/bin/bash
    service motion start

在此先感謝任何有線索的人。 經過2天的搏斗,我確定自己不會。

根據將變量傳遞給shell_exec()? 您應該這樣更改代碼:

<?php
$output = exec('/var/www/html/aspirebox/start_webcam.sh 2>&1 ');
print_r($output);
?>

並讓您的bash腳本全部執行(無需sudo bash):

chmod a+x /var/www/html/aspirebox/start_webcam.sh

非常感謝您-確實有效。

我通過獲取運行Shell腳本的目錄的正確路徑以及運行“ service”的正確路徑來進行工作。

現在,我只想弄清楚為什么我會收到“無法啟動motion.service:訪問被拒絕”的信息

我已獲得www-data許可,可以在sudoers上運行無密碼的腳本,必須不斷進行挖掘。

再次感謝!

暫無
暫無

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

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