導航:首頁 > 編程語言 > phpexec執行失敗

phpexec執行失敗

發布時間:2022-12-19 07:22:05

『壹』 php 無法執行exec函數該怎麼解決

應該是你配置文件里 把該函數給禁用了!
去 php.ini 文件里 找到 disable_functions 把這個刪掉。
然後重啟服務!
如果是線上環境,建議不這么做

『貳』 php 無法執行exec函數該怎麼解決

class IndexController extends Controller {
public function index() {
$test_url= "Public/test/start.exe";
exec($test_url, $Output, $result);
echo $result;
}
}
復制代碼復制代碼
我把代碼改成這樣,並把start主程序放到Public/test下之後
$result返回值居然不是1,變成0了,

『叄』 PHP:exec()函數為什麼沒有反應呢

是因為php的許可權導致的,給文件夾777許可權,或者找到php執行的用戶,給文件夾該用戶的執行許可權

『肆』 php中exec函數怎麼用

exec函數解析
exec語法: string exec(string command, string [array], int [return_var]);
exec返回值: 字元串
Exec參數說明
Command – 需要執行的命令
Array – 是輸出值
return_var –是返回值0或1,如果返回0則執行成功,返回1則執行失敗。
exec不成功,調試方案
一個技巧就是使用管道命令, 使用 2>&1, 命令就會輸出shell執行時的錯誤到$output變數, 輸出該變數即可分析。
如:
exec('convert a.jpg b.jpg', $output, $return_val);
改為:
exec('convert a.jpg b.jpg 2>&1', $output, $return_val);
print_r($output);

『伍』 windows 2003 php執行exec報錯

ffmpeg如果是桌面應用程序。。那就必須登錄到桌面才可以通過cmd.exe執行。。。。如果是沒登錄的話。。最好是通過啟動一個「服務」對視頻進行轉換

『陸』 菜鳥求助:PHP中調用系統命令為何有些命令總是失敗

PHP執行系統命令(簡介及方法)
在PHP中調用外部命令,可以用如下三種方法來實現:
方法一:用PHP提供的專門函數(四個):
PHP提供4個專門的執行外部命令的函數:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array &$output [, int &$return_var ]] )
說明: exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行。如果想得到結果,可以使用第二個參數,讓其輸出到指定的數組。此數組一個記錄代表輸出的一行。即如果輸出結果有20行,則這個數組就有20條記錄,所以如果需要反復輸出調用不同系統外部命令的結果,最好在輸出每一條系統外部命令結果時清空這個數組unset($output),以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
<?php
exec("dir",$output);
print_r($output);
?>
2)system()
原型: string system ( string $command [, int &$return_var ] )
說明: system和exec的區別在於,system在執行系統外部命令時,直接將結果輸出到游覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。
<?php
system("pwd");
?>
3)passthru()
原型: void passthru ( string $command [, int &$return_var ] )
說明: passthru與system的區別,passthru直接將結果輸出到游覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。第二個參數可選,是狀態碼。
<?php
header("Content-type:image/gif");
passthru("/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm");
?>
4)shell_exec()
原型: string shell_exec ( string $cmd )
說明: 直接執行命令$cmd
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
方法二:反撇號
原型: 反撇號`(和~在同一個鍵)執行系統外部命令
說明: 在使用這種方法執行系統外部命令時,要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。
<?php
echo `dir`;
?>
方法三:用popen()函數打開進程
原型: resource popen ( string $command , string $mode )
說明: 能夠和命令進行交互。之前介紹的方法只能簡單地執行命令,卻不能與命令交互。有時須向命令輸入一些東西,如在增加系統用戶時,要調用su來把當前用戶換到root用戶,而su命令必須要在命令行上輸入root的密碼。這種情況下,用之前提到的方法顯然是不行的。
popen( )函數打開一個進程管道來執行給定的命令,返回一個文件句柄,可以對它讀和寫。返回值和fopen()函數一樣,返回一個文件指針。除非使用的是單一的模式打開(讀or寫),否則必須使用pclose()函數關閉。該指針可以被fgets(),fgetss(),fwrite()調用。出錯時,返回FALSE。
<?php
error_reporting(E_ALL);
/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>
要考慮兩個問題:安全性和超時
1)安全性
由於PHP基本是用於WEB程序開發的,所以安全性成了人們考慮的一個重要方面 。於是PHP的設計者們給PHP加了一個門:安全模式。如果運行在安全模式下,那麼PHP腳本中將受 到如下四個方面的限制:
執行外部命令
在打開文件時有些限制
連接MySQL資料庫
基於HTTP的認證
在安全模式下,只有在特定目錄中的外部程序才可以被執行,對其它程序的調用將被拒絕。這個目錄可以在PhP.ini 文件中用safe_mode_exec_dir指令,或在編譯PHP是加上--with-exec-dir選項來指定。
當你使用這些函數來執行系統命令時,可以使用escapeshellcmd()和escapeshellarg()函數阻止用戶惡意在系統上執行命令,escapeshellcmd()針對的是執行的系統命令,而escapeshellarg()針對的是執行系統命令的參數。這兩個參數有點類似addslashes()的功能。
2)超時
當執行命令的返回結果非常龐大時,可以需要考慮將返回結果輸出至其他文件,再另行讀取文件,這樣可以顯著提高程序執行的效率。
如果要執行的命令要花費很長的時間,那麼應該把這個命令放到系統的後台去運行。但在默認情況下,象system()等函數要等到這個命令運行完才返回(實際上是在等命令的輸出結果),這肯定會引起PHP腳本的超時。解決的辦法是把命令的輸出重定向到另外一個文件或流中,如:
<?php
system("/usr/local/bin/order_proc > /tmp/abc ");
?>
但我調用的DOS命令需要幾分鍾的時間,而且為了批處理不能簡單的把結果寫入文件了事,要順序執行以下的程序
PHP設置了調用系統命令的時間限制,如果調用命令超時,雖然這個命令還是會被執行完,但PHP沒有得到返回值,被終止了(最可恨的是,不顯示任何錯誤)
修改php.ini並重啟Apache以允許系統命令運行更長的時間
max_execution_time = 600
我的程序是後台運行的,邏輯OK就成了

『柒』 php的exec調用一個exe程序後程序不執行

php可以調用外部exe程序,如果是在伺服器端執行伺服器端的程序,使用exec函數。 提示一點:php是伺服器端腳本,因此,不能在客戶端執行伺服器端的程序。

『捌』 php exec()

php的exec函數用法如下:

exec — 執行一個外部程序

stringexec(string$command[,array&$output[,int&$return_var]])

exec() 執行command 參數所指定的命令。

command:要執行的命令。

output:如果提供了 output 參數,那麼會用命令執行的輸出填充此數組,每行輸出填充數組中的一個元素。數組中的數據不包含行尾的空白字元,例如 字元

請注意,如果數組中已經包含了部分元素,exec()函數會在數組末尾追加內容。

如果不想在數組末尾進行追加,請在傳入 exec() 函數之前對數組使用 unset() 函數進行重置。

return_var:如果同時提供output和return_var 參數,命令執行後的返回狀態會被寫入到此變數。

返回值:

命令執行結果的最後一行內容。

如果需要獲取未經處理的全部輸出數據,請使用 passthru() 函數。

如果想要獲取命令的輸出內容,請確保使用 output 參數。

『玖』 php中shell_exec不能運行

在Windows平台下安裝PHP後,在使用PHP的exec、shell_exec等函數時,經常會遇到報錯:unable to fork...,這實際上是因為PHP對cmd.exe沒有足夠的許可權引起的。
解決方法:為C:\Windows\System32\cmd.exe(系統不是安裝在C盤請相應更改)添加IUSR_ComputerName (ComputerName是你的計算機名稱)用戶的讀取、運行許可權,因為exec和shell_exec這兩個函數實際上是調用了cmd.exe來執行其它的程序。

『拾』 php exec函數不能執行...急..............

。。。你看exec的函數返回值是什麼!!!
exec等只會有返回值,而不會彈出窗口。you know?
你可以指定輸出和返回值的,看看手冊吧。。它有三個參數呢
output
If the output argument is present, then the specified array will be filled with every line of output from the command. Trailing whitespace, such as \n, is not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

return_var
If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.

返回值
The last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

To get the output of the executed command, be sure to set and use the output parameter.

閱讀全文

與phpexec執行失敗相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163