(PHP 3, PHP 4, PHP 5)
開啟一個指向程式的管道,該程式由派生給定的 command 指令執行而產生。
返回一個和 fopen() 所返回的相同的檔案指標,只不過它是單向的(只能用於讀或寫)並且必須用 pclose() 來關閉。此指標可以用於 fgets(),fgetss() 和 fwrite()。
若果出錯返回 FALSE。
注: 若果需要雙向支援,使用 proc_open()。
例子 1. popen() 例子
<?php$handle = popen("/bin/ls", "r");?>
注: 若果找不到要執行的指令,會返回一個合法的資源。這看上去很怪,但有道理。它容許訪問 shell 返回的任何錯誤訊息: <?phperror_reporting(E_ALL);/* 加入重定向以得到標準錯誤輸出 stderr。 */$handle = popen('/path/to/spooge 2>&1', 'r');echo "'$handle'; " . gettype($handle) . "\n";$read = fread($handle, 2096);echo $read;pclose($handle);?>
注: 若果找不到要執行的指令,會返回一個合法的資源。這看上去很怪,但有道理。它容許訪問 shell 返回的任何錯誤訊息:
<?phperror_reporting(E_ALL);/* 加入重定向以得到標準錯誤輸出 stderr。 */$handle = popen('/path/to/spooge 2>&1', 'r');echo "'$handle'; " . gettype($handle) . "\n";$read = fread($handle, 2096);echo $read;pclose($handle);?>
注: 在開啟了安全模式時,只能執行在 safe_mode_exec_dir 之內的程式。為實用起見目前不能在指向程式的路徑中包括 .. 成分。
在開啟了安全模式時,指令字串會被 escapeshellcmd() 轉義。從而 echo y | echo x 就成了 echo "y | echo x"。
參見 pclose(),fopen() 和 proc_open()。