我使用的是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
我的代码:
$input = $userName.'|'.$userPassword.'\n';
$myfile = file_put_contents('login.txt', $input.PHP_EOL , FILE_APPEND | LOCK_EX);
答案 0 :(得分:4)
此错误是由文件权限引起的。 php / apache用户没有在目录中写入的权限。修复的一种方法是使用命令chmod
更改目录的mod字节。如果会话用户不拥有该目录,则需要超级权限才能执行此修改。
$ sudo chmod -R 777 /path/to/directory
mod 777
为系统上的每个用户设置读/写和执行到目录。 R
选项以递归方式应用对每个文件和子目录的修改。因此,您可以一次更改htdocs目录的所有内容的权限。
答案 1 :(得分:2)
ps aux | grep httpd
sudo chown -R daemon /opt/lampp/htdocs/[Working Project]/
答案 2 :(得分:1)
此错误是由于文件权限引起的。文件或文件夹用户无权在目录中写入。
$ sudo chmod -R 755 /directory
755 – Web服务器通常使用此权限集。所有者拥有读取,写入和执行的所有权限。其他所有人只能读取和执行,但不能更改文件。
https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
答案 3 :(得分:0)
我会推荐两件事。首先,定义login.txt文件的完整路径。
var a = b?.c?.d
其次,您直接尝试写信:
$input = $userName.'|'.$userPassword.'\n';
$loginFile = "/opt/lampp/htdocs/PHP/Practice/PHP Functions/Login Validation/login.txt"
$myfile = file_put_contents($loginFile, $input.PHP_EOL , FILE_APPEND | LOCK_EX);
不可写。检查Web服务器正在运行的用户,并授予该用户对该文件夹的读/写权限。
答案 4 :(得分:-1)
$ sudo chmod -R 777 /opt/lampp/htdocs/
编写此代码,然后按Enter