iT邦幫忙

0

【請問怎麼讀取遠端的檔案???】

  • 分享至 

  • xImage
$a = file('C:\\test.txt');
foreach($a as $line)
{
	echo $line."<BR>";
}

我這樣子可以成功讀取到 c槽下的檔案

$a = file('C:\\test.txt');
換成
$a = file('\\\xxx.xxx.xxx.xxx\\e\\test.txt');

執行時顯示

Warning: file(\\xxx.xxx.xxx.xxx\e\test.txt) [function.file]: failed to open stream: Permission denied in C:\wamp\www\bbb.php on line 3

但我把

\\xxx.xxx.xxx.xxx\e\test.txt
貼到
網址列
它會彈出那個文字檔的內容耶
請問要怎麼解決呢??
謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

14
wiseguy
iT邦超人 1 級 ‧ 2012-07-21 00:50:54
最佳解答

你透過瀏覽器去執行 php,取用該網芳檔案的人是 apache runner,如果 apache 是安裝在 windows 下,那應該是 SYSTEM 身份。
而你在瀏覽器網址列打網芳位址去連,取用該網芳檔案的人是你,你能看得到檔案,表示你現在這個身份是可以取用該檔案的。
所以解法有 2:

  1. 去《服務》那邊,把 Apache 服務中的執行者(登入),從《本機系統帳戶》改為你現在的帳號。
  2. 把該網芳檔案的存取權限,開放給《本機系統帳戶》SYSTEM 使用。
看更多先前的回應...收起先前的回應...
andyto202 iT邦研究生 4 級 ‧ 2012-07-25 00:57:51 檢舉

第一個方法我有試出來
應該是這麼說吧
我自己是a電腦,我要連到b電腦的檔案
a、b電腦是不是要有一組相同的帳、密
能有辦法連過去
我有試著在雙方的電腦加一組帳、密
然後在apache那裡改成那組帳號登入
的確可以成功存取b電腦的檔案了
但是第二點要怎麼做呢??

wiseguy iT邦超人 1 級 ‧ 2012-07-25 22:02:12 檢舉

第二點是:不需要加帳密,直接把該檔案設給 SYSTEM 這個群組可以存取。因為 apache 預設使用這個身份執行。

andyto202 iT邦研究生 4 級 ‧ 2012-07-26 15:13:21 檢舉

wiseguy大
我看它安全性中
預設就有看到 SYSTEM了啊
但我還是連不進去

wiseguy iT邦超人 1 級 ‧ 2012-07-27 17:49:50 檢舉

看來據微軟官方說法,透過服務,系統帳戶基於安全原則是不給存取網路檔案的。
http://support.microsoft.com/kb/124184
所以只好用第一種方式了。

8
外獅佬
iT邦大師 1 級 ‧ 2012-07-20 23:29:59

權限的問題....
跟我提的這個問題是一樣的

我要發表回答

立即登入回答