我正在尝试在 Ubuntu 的本地主机中使用 HTML 和 PHP 保存数据。我的 HTML 和 PHP 文件运行良好,但是当我使用命令在本地主机中打开文件时
$myfile = fopen("testfile.txt", "w")
它不允许它创建它,但 PHP 文件正在运行,并且当使用命令设置以从 PHP 输出变量时,它运行良好。
如何允许 PHP 在本地主机 Ubuntu 中的 Apache 中创建文件。
我正在尝试在 Ubuntu 的本地主机中使用 HTML 和 PHP 保存数据。我的 HTML 和 PHP 文件运行良好,但是当我使用命令在本地主机中打开文件时
$myfile = fopen("testfile.txt", "w")
它不允许它创建它,但 PHP 文件正在运行,并且当使用命令设置以从 PHP 输出变量时,它运行良好。
如何允许 PHP 在本地主机 Ubuntu 中的 Apache 中创建文件。
您必须允许 Apache 用户(通常是
www-data
)在该目录中创建文件。这可以通过使 Apache 成为目录的所有者来实现,例如,如果目录名为my-dir
,您将打开一个终端并运行:如 Apache2 Ubuntu 默认页面所述:默认情况下,Ubuntu 不允许通过 Web 浏览器访问除位于 /var/www ... 中的文件之外的任何文件。这意味着您要写入的任何目录或文件都必须在 /var/www 下。我自己错过了这个信息,并且在尝试写入 /tmp 等时让我抓狂了一段时间。
如果要更改该目录中的所有文件夹和文件,而不仅仅是目录,请像这样添加 -R
如果您正在动态创建文件并且不想将其保存在服务器上而是在从客户端触发操作后将其下载到客户端计算机上,例如从用户Web 浏览器中单击按钮,您可以编写PHP代码如下;
免责声明:它不适用于那些打算将文件写入服务器以进行存档的人,但对于其他任何为了让他们的客户端用户将其下载到他们的 Web 浏览器而即时创建文件的人来说,它可能足以满足该目的。
我正要与我的客户交谈,要求他们允许 Apache 用户向 Apache 用户添加更多权限(正如之前的答案以及互联网上其他相关问题所建议的那样),以允许将文件写入其服务器 Web 所在的文件夹页面是从提供的。我几乎可以肯定,要他们同意这将是一项艰巨的任务,但幸运的是,上面的代码对我有用。