Ani*_*esh 3 php linux warnings login file
我正在使用Ubuntu 16.04和xampp 5.6.30。我正在尝试使用带有验证的文件创建一个简单的登录程序,但是将数据放入名为“ login.txt”的文件时遇到了问题。
错误:
file_put_contents(login.txt): failed to open stream: Permission denied in /opt/lampp/htdocs/PHP/Practice/PHP Functions/Login Validation/login.php on line 38
Run Code Online (Sandbox Code Playgroud)
我的代码:
$input = $userName.'|'.$userPassword.'\n';
$myfile = file_put_contents('login.txt', $input.PHP_EOL , FILE_APPEND | LOCK_EX);
Run Code Online (Sandbox Code Playgroud)
小智 10
此错误是由于文件权限引起的。php / apache用户没有写目录的权限。解决该问题的一种方法是使用命令更改目录的mod字节chmod。如果您的会话用户不拥有目录,则需要超级权限才能执行此修改。
$ sudo chmod -R 777 /path/to/directory
Run Code Online (Sandbox Code Playgroud)
mod 777为系统上的每个用户设置了对目录的读/写和执行。该R选项将修改递归地应用于每个文件和子目录。因此,您可以一次更改htdocs目录中所有内容的权限。
https://linux.die.net/man/1/chmod
权限错误可以通过以下两种方法解决。
ps aux | grep httpd
Run Code Online (Sandbox Code Playgroud)
注意:如果您没有更改它,它将默认为守护进程。
sudo chown -R daemon /opt/lampp/htdocs/[Working Project]/
Run Code Online (Sandbox Code Playgroud)
在 Linuxchown中用于更改任何文件夹或文件的所有权。因此,此命令将该文件夹的所有权授予daemon用户,这将使daemon用户能够完全访问该文件夹及其中的所有内容。
下面的命令给出了Read,Write和Execute权限User,Group并Owner。那么User就是你,谁也可以对其进行修改,其他程序,如文本编辑器还可以对其进行编辑,因此PHP了。
sudo chmod 777 /opt/lampp/htdocs/[Working Project]/File.txt
Run Code Online (Sandbox Code Playgroud)
这里使用数字提供权限
7用于所有权限read,write并且execute.6用于read和write。5用于read和execute。4仅用于read。权限以 ugo 模式授予。
User.Group。Others.sudo chmod u+rwx,g+rwx,o+rwx /opt/lampp/htdocs/[Working Project]/File.txt
Run Code Online (Sandbox Code Playgroud)
在这里更清楚的是您分配给谁的权限。sou代表用户,并被分配了读取(r)、写入(w)和执行(e)权限,类似地g是组和o其他。
方法2不适合大部分场景。我建议使用第一种方法,因为方法 2 只会为必须首先由您手动创建的文件授予读取、写入和执行权限。如果您希望 php 根据您在网站中的逻辑创建文件怎么办。在这种情况下,此方法将不起作用。如果守护进程将是所有者,它只能这样做。
小智 5
您可以在终端中运行以下命令,为该htdocs文件夹及其所有内容授予所有权限(对所有用户进行读/写/执行)。请注意,这无论如何都不安全,尤其是在生产中!
$ sudo chmod -R 777 /opt/lampp/htdocs/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29270 次 |
| 最近记录: |