簡體   English   中英

exec命令在Linux服務器上不起作用

[英]exec command is not working on Linux server

我使用PHP調用Java函數。 代碼是:

exec('pushd d:\xampp\htdocs\file_excecute\class & java Autoingestion username password id   Sales Daily Summary 20120902',$output,$return);

該代碼在Windows計算機上有效,但在Linux服務器上不起作用。 代碼是:

exec('pushd \var\www\domainname.com\itune_report\class & java Autoingestion username password id Sales Weekly Summary 20120901',$output,$return);

在啟用SELinux的計算機上嘗試從PHP腳本和PHP調用的外部腳本執行sudo命令時,存在(可能無法克服)困難。

確保在命令中使用Linux目錄路徑

Linux默認不會讓apache更改進程的組ID。

您可能需要使用其他解決方案,例如使PHP腳本將文件存放在cron或inotify監視的目錄中,該文件將以root權限調用另一個腳本。

顯然,它在Linux上不起作用。 pushd命令僅在Windows Shell中定義。 linux上的路徑必須使用正斜杠而不是反斜杠作為分隔符。

您使用了錯誤的斜杠作為字段分隔符,但這可能不是您唯一的問題。

由於您使用exec(command, output, return)格式,因此命令的輸出顯示在$ output中。

但是,這只會給您stdout。 外殼程序將向stderr發送錯誤消息。

不幸的是,沒有讀取stderr的exec()版本。

您可以通過在shell命令的末尾添加2>&1將兩個輸出合並為$output

exec("mycommand 2>&1", $output, $return);

再看$輸出,你會發現要么你可以用它來工作了,為什么它不工作,你的成功的命令錯誤消息的輸出。

如果您想編寫更嚴格的內容來分別處理stdout和stderr,則需要使用proc_open()代替: Exec()之后的PHP StdErr

暫無
暫無

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

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