fread()期望参数1是资源

时间:2016-03-19 15:23:01

标签: warnings fread

我有一个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)(建于2015年10月27日23:22:07) 版权所有(c)1997-2014 PHP小组 Zend Engine v2.4.0,版权所有(c)1998-2014 Zend Technologies

2 个答案:

答案 0 :(得分:0)

'Boolean given'表示fopen的返回值为false,因此您尝试打开/ dev / ttyACM0进行读取失败。 在尝试使用它之前,你应该检查你的句柄是否有效

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

至于为什么?也许该位置不存在,或者您没有权限,或者可能还有其他东西以独占锁打开。

答案 1 :(得分:0)

如果您正在阅读本教程: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脚本中更改文件名!