php - fopen() in PHP not creating or writing to txt file
问题描述
I get the following Warning:
Warning: fopen(Uploaded_Files/dataFile1.txt): failed to open stream: Permission denied in /opt/lampp/htdocs/PHP_Course_Practice/Superglobals/data_upload.php on line 17
- I am using XAMPP for 7.4.8-0
- Using my MacBook as a Localhost to learn PHP. I am quite new to coding.
- I've tried:
- writing the whole Path to the file dataFile1.txt in fopen() but it's not solving the problem
- Checked in PHP.ini that allow_url_fopen is on
- included whole path at the top of PHP file but also not solving the problem
- Also tried
chown -R www-data:www-data folder
(where folder was full path to the folder) and Terminal saidchown: www-data: illegal group name
- Also tried
sudo dseditgroup -o edit -a daemon -t user wheel
(first to Superglobals Folder and then later to root folder of Xampp)
- The full Path that fopen() is trying to reach and write to file is: /opt/lampp/htdocs/PHP_Course_Practice/Superglobals/Uploaded_Files/dataFile1.txt
- I'm not keen on using 777 as I read in various articles that it's not safe to use.
The Code is:
<?php
$document_root = $_SERVER["DOCUMENT_ROOT"];
$fileRoot = $document_root . "/PHP_Course_Practice/Superglobals/Uploaded_Files/dataFile1.txt";
echo "Root: $document_root";
include($document_root . "/PHP_Course_Practice/Superglobals/Uploaded_Files/dataFile1.txt");
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<?php
if (isset($_POST["submit"])) {
$dataFile1 = fopen("Uploaded_Files/dataFile1.txt", "w");
$dataFile1Txt = "My age is " . $_POST["age"] . ".";
fwrite($dataFile1, $dataFile1Txt);
echo $dataFile1;
fclose($dataFile1);
}
?>
<form action="data_upload.php" method="post">
<input type="text" name="age">
<input type="submit" name="submit">
</form>
</body>
</html>
解决方案
您应该尝试检查要打开的文件或目录的权限。之后,您可以添加以递归方式读取和写入该目录的权限,如下所示
$ chmod -R 770 /path/toyour/directory
推荐阅读
- python-3.x - 如何使用特殊字符更改 Jupyter Notebook 中的目录?
- javascript - req.body 在使用 body-parser 时返回 undefined
- sas - SAS Proc 打印 - 无输出
- regex - 我想使用正则表达式来搜索所有不包含特定字符串的行
- java - 为什么 javafx 忽略 main 的返回并仍然启动应用程序?
- reactjs - reactjs - 处理复选框(多个)单击事件
- spring - Spring Core 5 + Postgresql 10.4 + C3p0 设置 CLOB 值时的问题(不使用 Hibernate)
- r - 如何将名称列表传递给 list.select?
- ssh - GCE VM 无法通过 SSH 连接到它刚刚在不同项目中创建的新 GCE VM
- reactjs - 丢失类名的元素