fopen () не работает - PullRequest
       5

fopen () не работает

1 голос
/ 06 сентября 2011

Я хочу прочитать простую строку из текстового файла размером около 3-4 Мб, но fopen () завершается неудачно (вызывается «не могу открыть файл» из die ()).Вот код:

clearstatcache();
$fh = fopen("/my/path/to/file.txt", "r") or die("can't open file");
$sql = fread($fh,filesize("/my/path/to/file.txt"));

Ответы [ 5 ]

4 голосов
/ 06 сентября 2011

Вы должны добавить в свой код эту строку

error_reporting(E_ALL);

, и ВСЕГДА сохраняйте эту строку во ВСЕХ ваших кодах

, а также эту строку

ini_set('display_errors',1);

исохраняйте эту строку только на сервере разработки.
в то время как на рабочем месте ее следует изменить на

ini_set('display_errors',0);
ini_set('log_errors',1);

При этом вам не потребуется помощь Stackoverflow при чтении очевидных теперь сообщений об ошибках.

3 голосов
/ 06 сентября 2011

Сначала вы проверили, существует ли файл?

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"));
0 голосов
/ 04 марта 2018

В вашем FTP права доступа к файлу обычно должны быть 646 (или -rw-r--rw-), , а не 777 (всегда игнорируйте такие комментарии). Вы хотите дать ключ тому, кому доверяете, установка разрешений на 777 равносильна выдаче копии вашего ключа каждому .

0 голосов
/ 06 сентября 2011

Измените вторую строку на:

$fh = fopen("/my/path/to/file.txt", "r") or die($php_errormsg);

и посмотрите, что она выводит в качестве причины.

0 голосов
/ 06 сентября 2011

Попробуйте вывести системные ошибки в die или попробуйте использовать try… catch. Также включите ошибки php во время разработки. Также проверьте, доступен ли файл для чтения, прежде чем открывать его.

Наиболее распространенные проблемы: файл не существует (или указан неверный путь?), Недостаточно прав для чтения этого файла.

...