![](/img/trans.png)
[英]Using PHP shell_exec() to execute BASH script, can't write files
[英]using php shell_exec to execute a binary file to capture output files
我正在使用PHP的shell_exec函數來執行C程序的二進制.exe文件。
我的C程序接受一個輸入文本文件,並在輸出中創建多個文本文件。 要將其與Web前端集成,我正在使用php的shell_exec函數來執行shell腳本,該腳本隨后又調用二進制C .exe文件。
該二進制.exe文件,輸入文本文件,shell腳本和php文件位於服務器端。 我已授予chmod 777訪問服務器端提到的文件以進行測試。
php中執行shell腳本的摘錄如下:
回聲shell_exec('sh segment.sh 2>&1');
現在,我在這里執行一個shell腳本,該shell腳本按如下方式運行二進制.exe文件:
->段.sh
./auto_import.exe input_file.txt-條款
auto_import是C二進制.exe文件。
當我在終端中分別運行shell腳本時,它會為我提供適當的輸出。 也就是說輸出將是4-5個不同的文本文件。
但是,當我用PHP調用shell腳本時,我無法獲得任何輸出,而且我不確定如何從二進制文件(即文本文件數量)接收輸出。
我曾嘗試提供文件的絕對路徑,例如:
在php文件的shell腳本中,該腳本的調用方式是:
回聲shell_exec('sh /path/segments.sh 2>&1');
在shell腳本中,二進制文件的調用如下
回聲shell_exec('sh / path / binary 2>&1');
我還使用了exec函數,如下所示:
$ cmd =“ /auto_import.exe input_file.txt -terms”; echo exec($ cmd,$ output);復制代碼
您能在這方面給我幫助嗎?
如果我對您的理解正確,那么您的命令將按預期方式執行並生成文件,您現在只需使用PHP即可閱讀這些內容。 一種方法如下:
<?php
$fileName = 'somefilethatyougenerated.txt';
$file = fopen($fileName, "r") or die("Unable to open file!");
$content = fread($file,filesize($fileName));
// manipulate contents here
fclose($myfile);
?>
如果您需要逐行讀取文件,請考慮使用“ fgets”,如下所示: 如何在php中逐行讀取文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.