fclose(): 参数 #1 ($stream) 必须是资源类型,bool 给定

Posted

技术标签:

【中文标题】fclose(): 参数 #1 ($stream) 必须是资源类型,bool 给定【英文标题】:fclose(): Argument #1 ($stream) must be of type resource, bool given 【发布时间】:2021-05-12 12:28:06 【问题描述】:

我刚刚重新启动了我的 laravel 8.0 项目,但出现以下错误,请问可能是什么问题,每当我运行“php artisan serve”时都会发生这种情况

   TypeError

  fclose(): Argument #1 ($stream) must be of type resource, bool given

  at C:\Users\owner\Laravel-App\test-app\vendor\symfony\process\Pipes\WindowsPip
es.php:74
     70▕                         fclose($this->lockHandles[$pipe]);
     71▕                     
     72▕                     $this->lockHandles[$pipe] = $h;
     73▕
  ➜  74▕                     if (!fclose(fopen($file, 'w')) || !$h = fopen($file
, 'r')) 
     75▕                         flock($this->lockHandles[$pipe], \LOCK_UN);
     76▕                         fclose($this->lockHandles[$pipe]);
     77▕                         unset($this->lockHandles[$pipe]);
     78▕                         continue 2;
       continue 2;

  1   C:\Users\owner\Laravel-App\test-app\vendor\symfony\process\Pipes\WindowsPi
pes.php:74
      fclose()

  2   C:\Users\owner\Laravel-App\test-app\vendor\symfony\process\Process.php:130
4
      Symfony\Component\Process\Pipes\WindowsPipes::__construct()

【问题讨论】:

不确定 laravel 但我不认为你可以像这样在 close 中使用 fopen,你不需要句柄来拥有自己的 var 吗?像这样:$fopen = fopen($file, 'w'); 然后使用 if (!fclose($fopen) || !$h = fopen($file, 'r')) 也许? 感谢您在我使用时回复 $fopen = fopen($file, 'w'); if (!$fopen || !$h = fopen($file, 'r')) 它可以工作,但给出另一个错误“404 NOT FOUND” 也许您的$file 不存在?在你拥有它之前:if (!fclose($fopen) || !$h = fopen($file, 'r')) 不是这样的if (!$fopen || !$h = fopen($file, 'r'))。不确定这是否与它有关。 你试过重启你的机器吗? 我已经重启并出现了这些错误 【参考方案1】:

我今天遇到了同样的错误并应用了所有解决方案,但这解决了我的错误。

    卸载作曲家。 重启你的机器 安装作曲家

【讨论】:

【参考方案2】:

解决方法很简单,做就行了

php artisan config:clear

然后重新运行

php artisan serve

【讨论】:

【参考方案3】:

不要重启,不要卸载,不要恐慌

如果您使用的是 Windows 机器,请按照以下步骤操作:

    点击开始超级按钮。

    键入 cmd,右键单击命令提示符磁贴,然后单击以管理员身份运行

    输入tasklist /v | find "php"回车,找到php.exe的PID

    taskkill /PID <PID> /F杀死进程

    你已经完成了。

【讨论】:

【参考方案4】:

我遇到了同样的问题,希望这个解决方案可以帮助其他人:

1. Delete the **vendor** folder/directory of the project
2. run **"composer install"** to install packages.

这解决了我的问题。

【讨论】:

【参考方案5】:

我运行了一个我忘记的 Laravel 应用程序(在另一个 IDE 的终端中)。 Ctl + C (killing) 让我能够克服这个错误消息。

【讨论】:

【参考方案6】:

你可以打开任务管理器然后寻找CLI(带有php标志的)后台进程,如果找到则杀死任务

【讨论】:

【参考方案7】:

首先运行composer install,然后再尝试使用php artisan serve 启动开发服务器。您可能还必须使用 php artisan key:generate 生成密钥,以防应用启动时出现错误。

【讨论】:

【参考方案8】:

您应该使用optimize:clear 命令清除配置缓存:

php artisan optimize:clear

【讨论】:

以上是关于fclose(): 参数 #1 ($stream) 必须是资源类型,bool 给定的主要内容,如果未能解决你的问题,请参考以下文章

标准IO: 文件的打开与关闭函数 fopen & fclose

fopen()和fclose()的用法

标准文件IO详解---fclose函数详解

Linux学习7-文件操作

2014025663《嵌入式系统程序设计》第五周学习总结

类型错误:parse() 缺少 1 个必需的位置参数:'stream'