簡體   English   中英

使用php shell_exec執行二進制文件以捕獲輸出文件

[英]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.

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