簡體   English   中英

如何從 php 運行 a.sh 文件?

[英]how to run a .sh file from php?

我正在嘗試使用 php 運行 shell 腳本

shell 腳本 ( /home/scripts/fix-perm.sh ) 在同一台服務器中

這是我正在嘗試的代碼

<?php
echo shell_exec('/home/scripts/fix-perm.sh');
?>

上面的代碼不起作用

我正在使用 linux 服務器

有人可以幫我嗎?

Shell exec 需要一個字符串,它需要是一個實際的命令。 您現在正在向它傳遞文件路徑。 這不會被解釋為“在此路徑上執行文件”。 你可以做幾件事。

您需要做的是使用程序調用該文件。 按照評論中的建議使用 bash 或 sh 調用它:

echo shell_exec('sh /home/scripts/fix-perm.sh');

另一種選擇可能是:

$contents = file_get_contents('/home/scripts/fix-perm.sh');
echo shell_exec($contents);

不過,我認為第一種選擇會更好。

需要注意的是,所有用於執行外部程序的命令都需要實際命令,而不是文件路徑或其他東西。 這適用於shell_execexecpassthru等。

我不確定,但您可以先嘗試在服務器上使用chmod +x /home/scripts/fix-perm.sh然后嘗試...

首先,您需要確保文件具有正確的權限

在您的服務器上chmod u+x /home/scripts/fix-perm.sh

然后你運行: echo shell_exec('sh /home/scripts/fix-perm.sh');

或者如果要將結果輸出到 txt 文件中:

shell_exec('sh /home/scripts/fix-perm.sh > /home/scripts/log.txt &');

我在閱讀所有帖子時遇到了類似的問題。 我想執行一個帶有另一個文件夾路徑的 file.sh,並將結果保存在我的 php 頁面中(我不想關閉 .sh,因為它正在尋找 foe css 更改)。 這是我嘗試的,但 php 方面沒有 append:

    <?php
    echo '<html><head>';
    echo'</head><body>';
        shell_exec('/bin/sh ../include/makeCss/makeWatch.sh'); 
    echo '</body></html>';
?>

和 makeWatch.sh

 #!/bin/bash
sudo compass watch

暫無
暫無

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

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