服务器文件夹中的写权限

时间:2014-05-23 11:27:14

标签: php web

我想在服务器上的php web应用程序的源代码中创建文件夹。我尝试了这段代码,但我无法在应用程序文件夹中创建一个文件夹。是否需要服务器的用户名和密码?

<?php
if (!file_exists('http://domain.com/tourism/data/new')) {
    if(mkdir('http://domain.com/tourism/data/new', 0777, true))
    {
        echo "success";
    }
    else
        echo "error";
}
?>

3 个答案:

答案 0 :(得分:0)

<?php
// Desired folder structure relative path
$str = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter 
// to mkdir() must be specified.

if (!mkdir($str, 0777, true)) {
    die('Failed to create folders...');
}

// ...
?>

确保您有权创建任何文件夹。

答案 1 :(得分:0)

如果您的脚本需要存储文件,通常的做法是为此指定一个专用文件夹。此文件夹将位于Web根目录之外(不能通过http / https访问),并且将以Web服务器可以写入的方式设置其权限。您可以使用(例如)

执行此操作
chgrp https $FOLDER
chmod g+w $FOLDER

因此,无法mkdir中使用http://。您应该使用文件系统路径,例如/srv/my-script/data。最好将此路径配置为可配置,例如将其放在配置文件中。

  

[...]在服务器上的php web应用程序的源代码中创建文件夹。

这是一个非常糟糕的主意,可能会让您容易受到攻击。攻击者可能能够上传自己的PHP代码。

答案 2 :(得分:-1)

为此,执行脚本的“用户”将需要写入权限。这通常是Web服务器用户(在许多linux中,'www-data')。

这可能是也可能不是。大多数人建议至少在web-root之外创建位置。