測試程式:
exec("ping baidu.com", $list);
for ($i=0;$i < count($list);$i++) {
print $list[$i]."\n";
}
?>
中文資料:
這個函數一般只用於linux
很少有人把php放在windows伺服器上面來啟動並執行,php裡面有些函數是只支援linux的.不是所有的都可以在windows上面用的!
exec可以用在win上面
在IIS+PHP下運行exec 首先要給php讀cmd.exe的許可權(就是要給cmd.exe 安全裡面添加上 internet來賓使用者權限) 不然會出錯
apache下不知道是以什麼許可權啟動並執行 不知道會不會也是許可權的問題
E文資料:
It's because your host has limited certain functions of PHP.
exec is a PHP-specific function that your web host disabled with PHP safe mode
看來在windows下面有很多許可權問題不那麼好解決,那要在xp下面運行還有別的方法嗎?
問了許多朋友,終於找到了下面兩個函數。fsockopen 和 fopen ,不過這兩個函數都有局限性。
fopen的話,如果失去連結,頁面就會一直卡住不動,沒有逾時的參數,不好控制。
fsockopen要求的url是網域名稱,但是我資料庫裡面的好多資料都是ip,比如http://202,234.34.54,判斷就失誤了。 (我最後選用了這個方法)
在網上找了個提取網域名稱的函數,但是都找不到提取包括www函數,唉,想偷懶都不行,無奈,自己寫了一個function get_domain($url){
$url1 = $url;
$upos = strpos($url1, "http://");
if($upos==0) $url1 = str_replace("http://", "", $url1);
$upos = strpos($url1, "/");
if($upos){
$url2 = substr($url1,0,$upos);
}
return $url2;
}// end function
下面是測試代碼:
function test($testurl){
$fp = @fsockopen($testurl, 80, &$errno, &$errstr, 2);
if(gettype($fp)!=resource){
$remark="網址連結失效!";
}
}
此函數的詳細介紹在網上有很多,需要的朋友自己搜下咯。