【发布时间】:2020-12-05 01:03:30
【问题描述】:
我收到以下警告:
警告:fopen(Uploaded_Files/dataFile1.txt):无法打开流:第 17 行 /opt/lampp/htdocs/PHP_Course_Practice/Superglobals/data_upload.php 中的权限被拒绝
- 我正在为 7.4.8-0 使用 XAMPP
- 使用我的 MacBook 作为本地主机来学习 PHP。我对编码很陌生。
- 我试过了:
- 在 fopen() 中写入文件 dataFile1.txt 的整个路径,但这并没有解决问题
- 在 PHP.ini 中检查 allow_url_fopen 已打开
- 在 PHP 文件顶部包含整个路径,但也没有解决问题
- 还尝试了
chown -R www-data:www-data folder(其中文件夹是文件夹的完整路径),终端说chown: www-data: illegal group name - 还尝试了
sudo dseditgroup -o edit -a daemon -t user wheel(先到 Superglobals 文件夹,然后到 Xampp 的根文件夹)
- fopen() 尝试访问并写入文件的完整路径是: /opt/lampp/htdocs/PHP_Course_Practice/Superglobals/Uploaded_Files/dataFile1.txt
- 我并不热衷于使用 777,因为我在各种文章中看到使用它不安全。
代码是:
<?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>
【问题讨论】:
-
我不是 Mac 用户,所以我无法告诉您该平台的最佳实践,但将用户数据直接存储到应用程序目录中几乎从来都不是一个好主意。
标签: php fopen permission-denied lampp