file_put_contents(.../bootstrap/cache/services.json):无法打开流:没有这样的文件或目录

Posted

技术标签:

【中文标题】file_put_contents(.../bootstrap/cache/services.json):无法打开流:没有这样的文件或目录【英文标题】:file_put_contents(.../bootstrap/cache/services.json): failed to open stream: No such file or directory 【发布时间】:2017-07-06 06:55:20 【问题描述】:

在运行任何php artisan 命令时,我一直收到此错误。

[错误异常] file_put_contents(/Applications/MAMP/htdocs/code/bheng/md-bheng/bootstrap/cache/services.json):无法打开流:没有成功 h 文件或目录

我该如何阻止它?

【问题讨论】:

【参考方案1】:

编辑 - 如果services.json文件不存在,运行php artisan serve然后停止强制创建文件。 见:laravel services.json not created

编辑 - 更新了解释每个命令的答案。

首先,忽略每个命令开头的$。这些是表示命令是在终端中执行的。

要查找您的用户名,如果您还不知道,请运行:

$ whoami

对我来说,这将输出rob

接下来我们要ch确定services.json 文件的拥有ership (chown)。我们将所有者设置为您的用户名(在我的情况下为 rob),将组设置为 _www,这是 MAMP 运行的用户。

$ sudo chown rob:_www /Applications/MAMP/htdocs/code/bheng/md-bheng/bootstrap/cache/services.json

接下来我们要ch确定storage 目录的拥有ership (chown)。我们再次将所有者设置为您的用户名(在我的情况下为rob),将组设置为_www。您可能还会注意到-R 选项。这将通过 storage 目录中包含的所有子目录递归地执行此命令。

$ sudo chown -R rob:_www /Applications/MAMP/htdocs/code/bheng/md-bheng/storage

最后,我们要更改存储目录中单个文件和目录的权限。以下命令将findstorage目录内,所有目录(-type d)或所有文件(-type f)并执行-exec后面的命令。

$ sudo find /Applications/MAMP/htdocs/code/bheng/md-bheng/storage -type d -exec chmod 775  \;
$ sudo find /Applications/MAMP/htdocs/code/bheng/md-bheng/storage -type f -exec chmod 664  \;

我们正在执行的命令将为每个目录或文件ch调整 mode (chmod)。 Read this to learn more about permissions。我已经链接到***,因为它很简单地解释了事情。那里可能有更好的资源。

然而,基本上,775 将授予对目录的读、写和执行权限。 664 将授予文件的读写权限。

【讨论】:

你能解释一下每一行的作用吗? 为什么是 775 或 664 ?你怎么知道的? @ihue 我已经更新了我的回复,并根据要求对每一行进行了解释。【参考方案2】:
[ErrorException]
file_put_contents(/var/www/project/bootstrap/cache/services.php): 
failed to open stream: No such file or directory

对我来说,这是因为bootstrap/cache 文件夹。 我强行删除了cache,因此我遇到了这个错误。

只需重新创建cache 文件夹即可。

$>cd projectDir/bootstrap

$>projectDir/bootstrap> mkdir 缓存

会工作

【讨论】:

【参考方案3】:

如果文件夹 bootstrap/cache 确实存在或以前存在,或者您已删除 / .gitignored 它:

composer install 

composer.phar install

应该解决这个问题。 (你使用哪一个取决于你的作曲家设置。对我来说是第二个选项)

如果您一段时间内第一次运行 composer update 可能会发生此错误。

【讨论】:

【参考方案4】:

我曾经遇到过这个问题 您要做的就是在项目的“bootstrap”文件夹中创建一个名为“cache”的文件夹,然后在输入命令composer install后创建一个名为“services.php”的文件,一切都应该正常工作。

【讨论】:

以上是关于file_put_contents(.../bootstrap/cache/services.json):无法打开流:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

详解PHP file_put_contents() 函数用法示例

php 使用 imagejpeg() 和 file_put_contents()

PHP file_put_contents() 函数

file_put_contents 是不是与 NFS 同步

file_put_contents记录的日志内容丢失

file_put_contents 给我一个特定的错误