Невозможно открыть файл с помощью fopen (php)

Я пытаюсь открыть файл для чтения в сценарии php, но возникли проблемы.

Это мой код

$fileHandle = fopen("1234_main.csv", "r")or die("Unable to open");
if (!file_exists($fileHandle))
{
echo "Cannot find file.";
}

Сценарий находится в том же каталоге, что и файл, который я пытаюсь прочитать, и нет других ошибок разрешения на чтение / запись, так как я могу создавать / читать другие файлы в этом же каталоге.

Когда я запускаю скрипт, я просто получаю сообщение об ошибке «Не удается найти файл». Почему отображается это сообщение об ошибке? Конечно, если fopen () не может открыть файл, оператор «or die» должен завершить скрипт?

Кроме того, почему я не могу открыть файл, когда он определенно существует и находится в том же месте, что и скрипт (я также попытался использовать полный путь к имени файла вместо просто имени файла).

Я довольно новичок в php (но у меня есть exp на c ++), поэтому, если это глупый вопрос, я прошу прощения.

Большое спасибо

2

Решение

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

Сначала вы должны проверить его существование file_exists("1234_main.csv") и если он существует, попробуйте открыть его.

0

Другие решения

В PHP file_exists() ожидает имя файла, а не дескриптор. Попробуй это:

$fileName = "1234_main.csv";
if (!file_exists($fileName))
{
echo "Cannot find file.";
} else {
$fileHandle = fopen($fileName, "r")or die("Unable to open");
}

Также имейте в виду, что имена файлов должны быть указаны относительно первоначально запрошенного php-скрипта при выполнении скриптов на веб-сервере.

3

Ты можешь использовать file_get_content() для этой операции. При неудаче, file_get_contents() вернет ЛОЖЬ. Например

$file = file_get_contents('1234_main.csv');

if( $file === false ){
echo "Cannot find file.";
}
1

file_exists принимает строку, а не дескриптор файла. Увидеть http://php.net/manual/en/function.file-exists.php

0
По вопросам рекламы [email protected]