短故事:open_basedir不會讓我寫文件,但目錄似乎是正確的?
我在我的php腳本中獲得了open_basedir限制 - 一個簡單的「測試將新文件寫入磁盤」腳本。它告訴我,我有open_basedir設置正確,文件位於正確的位置 - 但沒有運氣,每次都是相同的錯誤。我在這個網站上搜索了類似的open_basedir問題,但是我沒有看到這個問題 - 目錄看起來不錯,但仍然會引發錯誤。
我猜測的問題是什麼:
1)的open_basedir不工作的方式,我認爲它確實
2)我的設置是錯誤的,我只是沒有看到它
3)它實際上其他東西,如IIS讀/寫權限等
4)???
長的故事:
我工作用PHP在IIS服務器上,我試圖讓下面的代碼片段工作(一個簡單的寫文件測試):
date_default_timezone_set('America/Chicago');
$myFile = 'testfile.txt';
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Some Text\n";
fwrite($fh, $stringData);
$stringData = "Some More Text\n";
fwrite($fh, $stringData);
fclose($fh);
這PHP腳本位於C:\的Inetpub \ wwwroot的\ WEBDIRECTORY \ test_write.php我的服務器上
這裏是我的php.ini中的open_basedir:
的open_basedir = C:\的Inetpub \ wwwroot文件:C:\的Inetpub \ wwwroot \ WEBDIRECTORY
無論何時我打開腳本的頁面,我都希望看到沒有輸出,然後當我檢查時應該在服務器上寫入一個新文件。這是我取而代之:
警告:fopen():open_basedir 限制生效。 文件(TESTFILE.TXT)不是 允許路徑(S)內:(C:\的Inetpub \ wwwroot的) 在 C:\的Inetpub \ wwwroot的\ WEBDIRECTORY \ test_write.php 第5行警告: 的fopen( TESTFILE.TXT):未能打開 流:操作 ç不允許:\的Inetpub \ wwwroot的\ WEBDIRECTORY \第5行無法打開文件
test_write.php 我已經嘗試了很多排列組合:最初open_basedir行只是
open_basedir = c:\ inetpub \ wwwroot
......但那也行不通。我也試着輸入testfile.txt(c:\ inetpub \ wwwroot \ WEBDIRECTORY \ testfile.txt等)的絕對路徑,而不僅僅是文件本身的名稱,並且我一直得到相同的錯誤信息。
任何想法?非常感謝你的幫助。
這裏有兩篇文章可能有所幫助。這可能是你如何進入路徑。 http://bytes.com/topic/php/answers/7819-open_basedir-errors(他在線索底部找到答案)。 http://www.kavoir.com/2009/06/php-open_basedir-in-phpini-to-limit-php-file-accesses-to-a-certain-directory.html(open_basedir的一般描述) – Jim 2010-10-26 14:24:54