簡體   English   中英

php shell_exec()命令不起作用

[英]php shell_exec() command is not working

我試圖從PHP運行.sh文件。 我嘗試用shell_exec()來做。 但它不起作用我在堆棧溢出中提到了許多與此相關的問題,但無法解決

我的PHP代碼是(web.php)

    <?php
    echo shell_exec('/var/www/project/xxe.sh');
    echo "done";
    ?>

只打印完成。 但它是從終端工作(php /var/www/project/web.php)

在xxe.sh中我調用了一個python文件

    python vin.py

我也將.sh n .py文件的文件權限更改為777,請幫忙

如果你說它適用於終端而不是apache,那么apache的php.ini文件可能會禁用shell_exec()

請參見http://www.php.net/manual/en/ini.core.php#ini.disable-functions

您的apache的php.ini文件可能看起來像

disable_functions=exec,passthru,shell_exec,system,proc_open,popen

從此列表中刪除shell_exec並重新啟動Web服務器,盡管這存在安全風險,我不建議這樣做。

如果它在shell中運行良好,我認為apache是​​chroot。 所以php無法找到/ var / ...

或者httpd用戶的用戶無權輸入/ var / ...

如果你擅長PHP。 打開dir / var / ...並且readdir()並檢查dir是否存在並且檢查文件是否存在。

這個問題可能對你有幫助。 掃描/ home / with opendir()

在嘗試運行由github post-receive webhook觸發的腳本時。

這是我的項目目錄所在的位置(克隆git repo):

/var/www/html/my-repo

我在上面的目錄中創建了一個名為webhook.php的腳本:

<?php
#webhook.php

$cmd = shell_exec("git pull 2>&1");

#for debugging
echo $cmd;
?>

在/ var / www / html中執行以下命令

sudo chown www-data:www-data -R my-repo/

請訪問http://www.myserver.com/my-repo/webhook.php進行測試

將腳本的路徑添加到github webhooks。

問題通常在於,當您從php中執行代碼時,它會作為很多Linux發行版中的webservers用戶www-data運行。 Normaly此用戶沒有設置環境,因此沒有PATH。 通過在文件中使用完整路徑,您通常可以克服這個問題。

xxe.sh

/usr/bin/python /path/to/script/vin.py

我已經陷入這個問題好幾個小時了。

我考慮過一個解決方案。 1.將您的腳本移動到python文件“script.py”並將此文件放入您的服務器根目錄。 2. shell_exec(“python script.py”);

無論如何,它對我有用。

我在這里試了一切,沒有任何效果。 最終為我解決的是在shell_exec之前使用以下內容:

putenv('PATH=/usr/local/bin');

在我的主機上,我必須為我的php文件提供一個不同的路徑,以便從shell_exec()執行。 這不起作用shell_exec('/usr/bin/php backgroundtask.php');

雖然這做了shell_exec('/opt/php/php-5.5.0/bin/php backgroundtask.php');

您可以訪問此參考。

我有同樣的問題,因為PHP反斜杠。

PHP轉義反斜杠,因此命令到達shell

'COPY E:path1\path2\file.prn /B \127.0.0.1\"PRINTER NAME"'

所以我給了這樣的命令

'COPY E:\\path1\\path2\\file.prn /B \\\\127.0.0.1\"PRINTER NAME"'. 

你必須雙重轉義反斜杠:一次用於PHP,一次用於shell。

暫無
暫無

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

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