我想從一個文本文件中讀取一個簡單的字符串,它是大約3-4 MB,但fopen()失敗(稱爲「無法打開文件」)。以下是代碼:fopen()不工作
clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));
我想從一個文本文件中讀取一個簡單的字符串,它是大約3-4 MB,但fopen()失敗(稱爲「無法打開文件」)。以下是代碼:fopen()不工作
clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));
您是否首先檢查了該文件是否存在?
if (!file_exists("/my/path/to/file.txt") {
die('File does not exist');
}
clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));
嘗試輸出系統錯誤或嘗試使用try ... catch。同時在開發時打開php錯誤。在打開文件之前檢查文件是否可讀。
最常見的問題是:文件不存在(或只是提供了錯誤的路徑?),沒有足夠的權限來讀取此文件。
變化是第二行:
$fh = fopen("/my/path/to/file.txt", "r") or die($php_errormsg);
,看看它輸出的原因。
請不要死! –
@Col:我不是一個死的粉絲,但簡要的是找出爲什麼電話失敗,不重新構建所有的代碼:-) – paxdiablo
沒有必要重新構建任何代碼。只是傳遞給開發人員的錯誤消息的方式 –
你要添加到您的代碼,此行
error_reporting(E_ALL);
,並始終保留此行所有的代碼
而且這條線
ini_set('display_errors',1);
,並保留此行只在開發服務器。
而在生產它應改爲
ini_set('display_errors',0);
ini_set('log_errors',1);
這樣做,你將不再需要援助#1中讀取現在很明顯的錯誤消息。
在您的FTP 文件權限往往需要是646
(或-rw-r--rw-
),不777
(總是忽視這些類型的評論)。你想給一個你信任的人一個鑰匙,設置權限爲777
就好比給你的鑰匙副本大家。
有沒有這樣的文件?嘗試不用「死」來查看實際錯誤 – k102
您是否檢查了權限?另外,通過Apache在命令行和PHP上工作的位有所不同。 – Kumar
kumar got it>。<將此貼爲答案,我會將其標記爲已接受...對於不便之處... –