PHP - 无法创建文件

时间:2014-12-13 10:39:01

标签: php fopen die

我正在尝试使用从Web表单中选择的选项在我的Web服务器上创建一个文件。该文件永远不会被创建,我不断收到“无法打开文件”的消息。

<?php
    if(isset($_POST["style"])) {
            $boots = $_POST["style"];
    }
    $file = "bootsstyle";
    if(!file_exists($file)) {
            touch($file);
            chmod($file, 0777);
    }
    $openFile = fopen($file, "w+") or die("Can't open file");
    fwrite($openFile, $boots);
    fclose($openFile);
?>

我在互联网上搜了一个小时,不知道我哪里出错了。我已经检查了目录中的权限,它们是0777。

2 个答案:

答案 0 :(得分:1)

$boots = "your data";
$file = "bootsstyle";
if(!file_exists($file)) {
    touch($file);
    chmod($file, 0777);
}
$openFile = fopen($file, "w+") or die("Can't open file");
fwrite($openFile, $boots);
fclose($openFile);
$myfile=fopen($file, "r");
echo fread($myfile,filesize($file));
fclose($myfile);

答案 1 :(得分:0)

问题在于您尝试创建文件的目录的权限。 php脚本所在的目录必须可由名为 www-data 的用户组写入。有两种方法可以解决这个问题。

方法1:更改目录

的权限

您只需将目录权限更改为777.为此,请打开终端并导航到php脚本所在的目录。现在执行命令

sudo chmod 777 ./

方法2:将www-data设为目录

的所有者

打开终端并导航到包含php脚本的目录。现在,执行命令

sudo chown www-data ./ && sudo chmod 774 ./

您可以从https://linode.com/docs/tools-reference/linux-users-and-groups/了解有关Linux权限以及774和777之间差异的更多信息

  

注意:
如果文件不存在,以w +模式打开文件会创建该文件。所以你不必碰它。

     

注意:
上面的代码在运行LAMP服务器的kali linux 2017.3.2上进行了测试。