我在我的电脑上运行的虚拟服务器(Oracle Virtual Box)实例内的Ubuntu系统上运行这个愚蠢的小测试PHP脚本:
<header id="myCarousel" class="carousel slide">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner">
<div class="item active">
<%= image_tag('user/go.png', class: 'fill img-responsive') %>
<div class="carousel-caption">
<h2>Caption 1</h2>
</div>
</div>
<div class="item">
<%= image_tag('user/family.jpg', class: 'fill img-responsive') %>
<div class="carousel-caption">
<h2>Caption 2</h2>
</div>
</div>
<div class="item">
<%= image_tag('user/family.jpg', class: 'fill img-responsive') %>
<div class="carousel-caption">
<h2>Caption 3</h2>
</div>
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#myCarousel" data-slide="prev">
<span class="icon-prev"></span>
</a>
<a class="right carousel-control" href="#myCarousel" data-slide="next">
<span class="icon-next"></span>
</a>
</header>
尽管设置了所有适当的目录和文件权限,但它在fwrite上失败了。 fopen工作并创建文件,因此显式启用了写访问,但是fwrite死了,输出'fwrite failed'消息(没有显示其他错误输出)。
当我上传到我的真实服务器时,同样的脚本运行得非常好,所以我完全不知道为什么它不会写入文件;也许这是我的虚拟服务器导致问题的原因。
看起来像是一件可悲的事,但它让我疯了!相当长的时间谷歌搜索未能给出答案,所以请问这里的任何人提供一些见解吗?非常感谢。
答案 0 :(得分:2)
不确定为什么fwrite()
调用会死掉,因为它会返回写入的字节数。
那就是说,你试过file_put_contents()
吗?它是一种更简单的文件写入方式,是PHP 5早期推荐的方式
有了它,您只需要执行以下操作
$filename = "andy.txt";
if(!file_put_contents ($contents, $filename)) {
// Write failed!
}
无需打开和关闭文件指针,因为该功能会自动处理。 :)
答案 1 :(得分:1)
解决!这是我的虚拟服务器上的磁盘空间错误。在我的脑海里,我知道我已经在其他地方看到过这个问题,因为写入失败了,但在这种情况下我没有建立连接。
@ChristianF谢谢!切换到file_put_contents()非常有用,因为它也失败了,但给了我一个有意义的错误消息:
'file_put_contents(): Only 0 of 6 bytes written, possibly out of free disk space'
啊哈!回忆起日益增长的日志文件可能是一个问题,我自己删除了/ var / log(保存后)和Presto中的所有内容!它现在有效!所以,谢谢你的提示 - 从现在开始我将切换到使用file_put_contents。 BTW:error.log本身的内容为2GB,而/ var / log中其他所有内容的大小只有15MB左右,但删除error.log本身不起作用,所以我删除了所有内容。
@Clayton Smith谢谢你,但删除&#34;或死掉(&#39; fwrite失败&#39;)&#34;部分没有导致任何进一步的错误信息 - 这是令人沮丧的:令人遗憾的是,脚本开头的那些错误报告指令似乎没有做太多。
@NaeiKinDus谢谢,但我不认为我有SELinux跑步(我担心我对此一无所知)。虽然我有一个/ etc / selinux目录,但它里面没有配置文件,只是看起来像是一个骨架semanage.conf - 不管是什么。诸如sestatus之类的命令无法识别。