PHP調用linux命令詳細說明
/*
在php教程中調用linux命令的函數是
string exec(string command, string [array], int [return_var]);
如
exec( "vpopmail ");
echo exec('whoami');
再看一實例
function exec_enabled() {
$disabled = explode(', ', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
<?php
$tmp = exec("c:Imagegm.exe convert c:Imagefile1.tiff c:Imagefile1.jpg", $results);
?>
還有一種命令是
php通過函數system()調用系統命令。
string system ( string $command [, int &$return_var ] )
實例
system('asterisk -vvvvvvvvvvvc');
system()是一樣的函數C的,它執行給定的命令和輸出結果的版本。 該system()的調用也嘗試自動刷新網頁伺服器的輸出緩衝器在每個輸出行如果PHP運行作為伺服器模組。 如果你需要執行一個命令,並已全部通過直接從背面沒有任何干擾的命令資料,使用passthru()函數。
$last_line = system('ls', $retval);
function my_exec($cmd, $input='')
{$proc=proc_open($ cmd, array(0=>array('pipe', 'r'), 1=>array('pipe', 'w'), 2=>array('pipe', 'w')), $pipes);
fwrite($pipes[0], $input);fclose($pipes[0]);
$stdout=stream_get_contents($pipes[1]);fclose($pipes [1]);
$stderr=stream_get_contents($pipes[2]);fclose($pipes [2]);
$rtn=proc_close($proc);
return array('stdout'=>$stdout,
'stderr'=>$stderr,
'return'=>$rtn
);
}
var_export(my_exec('echo -e $(</dev/stdin) | wc -l', 'hnelnlo'));
實例三
$cmd = "date";
$output = system($cmd);
printf("System Output: $outputn");
exec($cmd, $results);
printf("Exec Output: {$results[0]}n");
php調用linux命令的許可權問題
你可以使用定時任務執行你要調用的php,這時的許可權就是root,
php通過函數system()調用系統命令
php一般是以apache使用者身份去執行的,把apache加入到存儲你檔的父資料夾屬組裡去,然後改該父資料夾許可權為775,這樣屬組成員就有寫的許可權,而apache屬於這個組就可以改寫該目錄下所有檔的許可權,當然, 屬組最好不要是root,你可以為該資料夾改個其它普通使用者組。
改apache/php的運行使用者方法不安全
*/