#php #warnings
#php #предупреждения
Вопрос:
У меня есть этот код:
$file = '/path/to/file.txt';
if (($fd = fopen($file, "a") !== false)) {
fwrite($fd, 'message to be written' . "n");
fclose($fd);
}
Почему я получаю следующие предупреждения?
fwrite(): supplied argument is not a valid stream resource
fclose(): supplied argument is not a valid stream resource
Ответ №1:
Ваш оператор if неверен. Попробуйте
if (($fd = fopen($file, "a")) !== false) {
Потому что ваш такой
$fd = fopen($file, "a") !== false
Комментарии:
1. ИБП… Я пропустил это. Большое спасибо!
Ответ №2:
Потому что у вас ошибка в скобках. Код должен читать:
if (($fd = fopen($file, "a")) !== false) {
То, что делает текущий код, устанавливается $fd
в результат сравнения fopen
возвращаемого значения с false
, которое также false
(при условии fopen
успешного выполнения). По сути, у вас есть
if ($fd = false) {
это не требует пояснений, а также поддается проверке (с var_dump
).
Мораль истории: не присваивайте значения переменным внутри if
условий. Сейчас не 1980 год, и вы программируете не на C. Просто скажите «нет» и сделайте ядро читаемым; оно полюбит вас за это.