PHP中的fopen()没有创建或写入txt文件



我收到以下警告:

警告:fopen(Uploaded_Files/dataFile1.txt(:无法打开流:在第17行的/opt/lamp/htdocs/PHP_Course_Practice/Supergals/data_upload.PHP中权限被拒绝

  • 我在7.4.8-0中使用XAMPP
  • 使用我的MacBook作为本地主机来学习PHP。我对编码很陌生
  • 我尝试过:
    • 在fopen((中写入文件dataFile1.txt的整个路径,但这并不能解决问题
    • 已在启用allow_url_fopen的PHP.ini中签入
    • 在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/lamp/htdocs/PHP_Course_Practice/Superglobals/Uploaded_Files/dataFile1.txt
  • 我不喜欢使用777,因为我在各种文章中读到使用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>

检查web用户。

<?php
echo exec("whoami");

并将该用户添加到您的组中。

sudo usermod -a -G <groupName> <userName>

最后,检查文件的权限设置。

您应该尝试检查要打开的文件或目录的权限。之后,您可以将递归读写权限添加到该目录中,如下所示

$ chmod -R 770 /path/toyour/directory

我可以解决的方法是下载并安装XAMPP的Non-虚拟机版本。XAMPP(LAMPP(的VM版本似乎不适合在localhost上获得权限,除非您可能热衷于非安全地打开777。

最新更新