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
最后,我们要更改存储目录中单个文件和目录的权限。以下命令将find
在storage
目录内,所有目录(-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() 函数用法示例