首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is_writable()返回false

is_writable()返回false
EN

Stack Overflow用户
提问于 2010-01-23 19:04:20
回答 6查看 10.5K关注 0票数 2

我预计PHP函数fwrite()会出现问题。

代码语言:javascript
复制
$filename = 'rss.xml';  

if (file_exists($filename)) {
    echo "The file $filename exists";
} 

if (is_writable($filename)) {
    $fp = fopen($filename, 'w');
    fwrite($fp, $feed);
    fclose($fp);
 }
else{
    echo '<br />not writable..';
    if(!is_readable($filename)){
    echo ' and not readable!';
    }
}

执行脚本后,返回:

代码语言:javascript
复制
The file rss.xml exists
not writable.. 

rss.xml的chmod是755,安全模式是关闭的。

我被托管在(mt) mediatemple.com on a (dv)上,当我被托管在(gs)解决方案上时,脚本工作得很好。

我找不到哪里不对劲=/

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-23 19:08:57

CHMOD 0755意味着只有文件所有者可以写入(组和其他人可以读取和执行)。您应该将CHMOD更改为0775甚至0777,这取决于PHP的用户/组。

票数 -1
EN

Stack Overflow用户

发布于 2010-01-23 19:07:48

755的意思是:

  • rwx:owner
  • r-x的读、写、执行: group
  • r-x的读、执行:其他

的读、执行

因此,每个人都可以读取(和执行)该文件,但只有所有者可以对其进行写入。

也许拥有该文件的用户不是运行PHP脚本的用户?也就是说,当你的脚本由Apache的用户(通常是www-data__)运行时,文件可能属于任何人?

第一个想法可能是删除文件,让你的脚本尝试重新创建它;如果它被正确地重新创建(这意味着Apache在包含它的目录上拥有requires write权限),它应该能够在那之后修改它。

否则,您应该尝试将write权限授予other --如果您的脚本是由文件所有者以外的其他用户运行的,那么chmod o+w rss.xml应该可以做到这一点。

票数 4
EN

Stack Overflow用户

发布于 2010-01-23 19:10:40

755意味着文件的所有者可以修改它,但其他任何人都不能。所有者可能不是web服务器,而是您自己(您的FTP帐户?),所以PHP不能修改它。试着给它更广泛的权限。从775开始,如果不起作用,试试777。

有一些web主机以与您的FTP帐户相同的用户身份运行web服务器,因此他们不会得到有关文件权限的支持问题,但在我看来,这是一个很大的安全漏洞。我认为Mediatemple做了一件正确的事情,那就是不要以你的FTP帐户运行web服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2122910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档