我使用的是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);
此错误是由文件权限引起的。 php / apache用户没有在目录中写入的权限。修复的一种方法是使用命令chmod
更改目录的mod字节。如果会话用户不拥有该目录,则需要超级权限才能执行此修改。
$ sudo chmod -R 777 /path/to/directory
mod 777
为系统中的每个用户设置读/写和执行到目录。 R
选项以递归方式应用于每个文件和子目录的修改。因此,您可以一次更改htdocs目录的所有内容的权限。
ps aux | grep httpd
sudo chown -R daemon /opt/lampp/htdocs/[Working Project]/
此错误是由文件权限引起的。文件或文件夹用户没有在目录中写入的权限。
$ sudo chmod -R 755 /directory
755 - 这组权限通常用于Web服务器。所有者拥有读取,写入和执行的所有权限。其他人只能读取和执行,但无法对文件进行更改。
https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
我会推荐两件事。首先,定义login.txt文件的完整路径。
$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);
其次,直接你想写信给:
/opt/lampp/htdocs/PHP/Practice/PHP Functions/Login Validation/
不可写。检查Web服务器正在运行的用户,并授予该用户对该文件夹的读/写权限。