簡體   English   中英

無法在PHP中運行bash腳本

[英]Can't run bash script in PHP

我正在嘗試在PHP中運行bash腳本,但無法運行它。 的PHP -V

PHP 5.3.10-1ubuntu3.2 with Suhosin-Patch (cli) (built: Jun 13 2012 17:19:58)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Ubuntu 12.04 LTS 64位。

我的PHP代碼:

    $cmd='/www/var/pl/bash.sh';
    $retval =-1;
    exec( $cmd, $output ); //executing the exec function.
    foreach( $output as $tmp ) 
    { 
        echo "$tmp <br>"; 
    };

bash.sh:

 #!/bin/bash
swipl --quiet -s /var/www/pl/ples.pl -g "f(R, gel), writeln(R),open('/var/www/pl/in.txt',write, Stream),
write(Stream, (R)),
nl(Stream),
close(Stream)" -t halt.

我究竟做錯了什么?

我可以在Linux終端中運行bash.sh。

在終端中運行腳本時,您將以登錄帳戶執行該腳本。 您有帶有搜索路徑等的shell設置。

當php執行腳本時,它沒有外殼程序設置,並以Web服務器用戶帳戶運行。 執行時:

  • 確保您有完整的文件路徑, swipl是不夠的,它應該是/path/to/swipl
  • 確保Web服務器進程具有足夠的訪問權限以獲取所需的一切。

最有可能是路徑問題或權限問題。 例如,Web應用程序的運行用戶不知道swipl程序在哪里。

exec之前將2>&1添加到命令行,以便告訴您問題所在。 或者,您也可以在Web服務器錯誤日志(或PHP錯誤日志;在php.ini中檢查其路徑和設置)中找到stderr輸出。

暫無
暫無

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

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