【问题标题】:Linux file uploads, fwrites, does not workLinux文件上传,fwrites,不起作用
【发布时间】:2012-09-15 17:32:23
【问题描述】:

我已经在我的系统上安装了fedora15,安装了apache和php5.3和mysql。我没有更改任何配置文件中的任何默认设置

创建了一个ftpuser并将文件上传到Documentroot,即'/var/www/html/',当我运行php文件时,所有文件都运行成功。

但是当涉及到文件上传、fopen、fwrite、imagemagick convert 等,所有涉及以编程方式创建文件的程序都不起作用。我已经为我运行 php 脚本的文件夹授予了 777 权限,但它仍然给了我访问被拒绝的错误。

以下是创建权限被拒绝错误的示例代码。

    $handle =   fopen("test.txt","w+");
    if(!$handle)die("Could not open file for writing");
    fwrite($handle,"Testing Uploads Successfull.");
    fclose($handle);

以上文件位于我新安装的fedora15系统的'/var/www/html/test/'目录下。

虽然如果我使用 php 命令行以 root 用户身份运行此文件,它会正确执行创建一个新文件和其中的文本。如果我在命令行中与另一个用户运行相同的文件,则会产生权限被拒绝错误,尽管该目录已获得 777 权限。

请任何人帮助我解决这种奇怪的行为,

提前致谢。

【问题讨论】:

  • 是 app-armor 还是 se-linux?
  • 感谢您的回复,但您能否详细说明一下,以便知道我需要做什么。
  • 这是一项保护您的系统的服务。我不是fedore的用户,但我记得这可能会带来这样的问题。您可以尝试禁用 selinux 进行测试:crypt.gen.nz/selinux/disable_selinux.html
  • 可能问题是启用了safe mode。但请记住(来自php.net 的引用):此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已删除

标签: php linux file-upload temporary-files


【解决方案1】:

SELinux 阻止 Web 服务器创建和写入文件。有关详细信息,请参阅 httpd_selinux(8) 手册页。

【讨论】:

  • 感谢 RomanKonz 和 Ignacio 引导我朝着正确的方向前进。现在问题已经解决了。这只是 selinux 的问题。它没有启用 httpd_write 选项。制作httpd解决了这个问题。再次感谢日志。
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 2014-01-09
  • 2013-03-17
  • 2013-12-09
  • 2015-02-11
  • 2011-10-10
相关资源
最近更新 更多