PHP:"未能打开流:权限被拒绝"

时间:2015-08-21 09:02:49

标签: php file-permissions mkdir directory-permissions file-put-contents

当我尝试通过某些功能访问任何目录或文件时,我在服务器上获得了一些有趣的结果。我已经设置了所有文件和文件。 777的目录权限,并已将内容所有者更改为Apache但仍然收到错误消息。代码:
move_uploaded_file($_FILES['file']['tmp_name'], '/var/www/html/fileContent_Site/userData/'.$_SESSION['username'].DIRECTORY_SEPARATOR.$_FILES['file']['name']);
要么     file_put_contents('userData/userData.txt', $result,FILE_APPEND);      mkdir("userData/".$register['username']);

对于' move_uploaded_file()'我明白了:

  

move_uploaded_file(/var/www/php/Site/userData/radi/110729.png):无法打开流:/var/www/php/Site/upload.php中的权限被拒绝

     
    

move_uploaded_file():无法移动' / tmp / phpUFvMcn' to' /var/www/php/Site/userData/radi/110729.png'在/var/www/php/Site/upload.php

  

对于' file_put_content()'和' mkdir()'

  

file_put_contents(userData / userData.txt):无法打开流:/var/www/php/Site/register.php中的权限被拒绝

     

mkdir():/var/www/php/Site/register.php中的权限被拒绝

3 个答案:

答案 0 :(得分:0)

使用

$_SERVER["DOCUMENT_ROOT"]."/myFolder/path to upload folder". 

并检查一次

答案 1 :(得分:0)

打开http.conf(在/opt/lampp/etc/httpd.conf)文件中。

编辑此部分:

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User hostname
Group hostname
</IfModule>

看,如果有效。

答案 2 :(得分:0)

  1. 检查运行PHP的所有者。要进行检查-只需将这些字符串添加到PHP文件中“ file_put_contents”附近

    回显“当前用户:”。get_current_user();

    echo“脚本在用户:” .exec('whoami');

    下执行
  2. 如果您看到当前用户和“脚本用户”之间的区别,那么您已经找到了问题。

输出示例:

current user: root
script was executed under user: www-data

只需将适当的用户设置为您要从PHP脚本编写的PHP文件目录/目录: 在Linux终端中执行:

chown -R www-data:www-data /path/to/the/folder

请注意,“ www-data”用户仅作为示例。您应该使用从“在用户下执行脚本”输出中获得的用户。

P.S: 要检查文件夹所有者,可以使用以下linux命令:

ls -ltr

P.P.S: 检查您的文件夹是否具有正确的访问权限:755 文件夹php文件应具有“ 644”访问权限。

要检查权限,请使用与所有者检查相同的命令:

ls -ltr

您会看到类似的内容:

drwxr-xr-x  10 www-data www-data 4096 Aug  5 15:18 api

其中“ drwxr-xr-x”是访问权限。在Google上获取更多信息。