fread() ожидает, что параметр 1 будет ресурсом

У меня есть предупреждение PHP.

fread() expects parameter 1 to be resource, boolean given in /tmp/func.php on line 12

Мой код:

<?php

  $sqlite = 'teleinfo.sqlite';

  function getTeleinfo () {

    $handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux

    while (fread($handle, 1) != chr(2));
--------

Благодарю вас !

php --version
PHP 5.4.45-0+deb7u2 (cli) (построено: 27 октября 2015 г., 23:22:07) Copyright (c) 1997–2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Зенд Технологии


person NebuK    schedule 19.03.2016    source источник
comment
Возможный дубликат warning-feof() ожидает, что параметр 1 будет ресурсом   -  person morxa    schedule 19.03.2016


Ответы (2)


«Заданное логическое значение» предполагает, что значение, возвращаемое вашим fopen, является значением false, поэтому ваша попытка открыть /dev/ttyACM0 для чтения не удалась. Вы должны проверить, действителен ли ваш дескриптор после fopen, прежде чем пытаться его использовать.

$handle = fopen ('/dev/ttyACM0', "r"); // ouverture du flux
if ($handle) {
    while (fread($handle, 1) != chr(2));
    ...
}

А почему? Возможно, местоположение не существует, или у вас нет разрешения, или, возможно, что-то еще открыло его с эксклюзивной блокировкой.

person Mark Jenkins    schedule 19.03.2016

Если вы следуете этому руководству: http://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/

Данные получены на /dev/ttyAMA0

stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts

Но в php скрипт анализируется на /dev/ttyACM0

Вы должны изменить имя файла в php-скрипте!

person K0rell    schedule 08.07.2017