mac thinkPHP运行权限问题、file_put_contents函数创建文件问题

下了个thinkPHP框架,初始化运行的时候提示我

./Application目录不可写,无法自动生成,于是ls -l查看了下权限

localhost:blog ya$ ls -l
total 16
drwxr-xr-x@  5 ya  staff   170  6 26 13:22 Application
drwxr-xr-x@  4 ya  staff   136  6 26 13:23 Public
drwxr-xr-x@ 12 ya  staff   408  6 26 11:20 ThinkPHP
-rwxr-xr-x@  1 ya  staff   434  1 28 15:47 composer.json
-rwxr-xr-x@  1 ya  staff  1034  1 28 15:47 index.php

由于是本地测试,先不管权限了,直接赋最高权限免得再报错

localhost:blog ya$ chmod -R 777 /Applications/XAMPP/xamppfiles/htdocs/blog
localhost:blog ya$ ls -l
total 16
drwxrwxrwx@  5 ya  staff   170  6 26 13:22 Application
drwxrwxrwx@  4 ya  staff   136  6 26 13:23 Public
drwxrwxrwx@ 12 ya  staff   408  6 26 11:20 ThinkPHP
-rwxrwxrwx@  1 ya  staff   434  1 28 15:47 composer.json
-rwxrwxrwx@  1 ya  staff  1034  1 28 15:47 index.php
localhost:blog ya$

注:
chmod -R 777 /Applications/XAMPP/xamppfiles/htdocs/blog
-R 表示该目录下所有文件
单个文件加权限直接 chmod 777 /Applications/XAMPP/xamppfiles/htdocs/blog/index.php

前一串字母含义

r  可读
w  可写
x  可执行

-/d               rwx                rwx                rwx
文件/目录    文件所有者权限     文件所有者所在组权限     其它用户权限

今天用PHP写文件又遇到了权限问题,代码

<?php
$contents = "这是使用file_put_contents写入的内容sss";
$contents2 = array("这是使用","file_put_contents","命令写入的内容ddd");
file_put_contents("/Applications/XAMPP/xamppfiles/htdocs/5.txt",$contents);
file_put_contents("6.txt",$contents2);
?>

file_put_contents()

    文件不存在时:参数无论是绝对路径还是相对路径均报错

    文件存在时:参数无论是绝对路径还是相对路径均不报错

于是我查看了下htdocs目录的权限,权限为:

drwxrwxr-x   12 root    admin     408  6 30 14:50 htdocs

可以看出开其它用户没有写权限,Apache运行的PHP应该就属于其它用户的权限于是我加权限

sudo -s

 chmod -R 777 /Applications/XAMPP/xamppfiles/htdocs

然后查看权限:

drwxrwxrwx   12 root    admin     408  6 30 14:50 htdocs

之后再运行file_put_contents()文件不存在时就可以创建了。

不过还是不明白,我当前用户启动的Apache 执行php 权限为什么属于第三组呢?

你可能感兴趣的:(mac thinkPHP运行权限问题、file_put_contents函数创建文件问题)