2

我有一个 PHP 语言的函数,可以在请求时创建一个 xml 文件。

if(($file= fopen("./include/catalogo.xml", "w"))==false){echo 'non creo il file'; return false;}

无法创建“catalogo.xml”,权限被拒绝。我知道我应该尝试更改权限,但是如果文件不存在怎么办?或者,有没有我忽略的东西?

4

3 回答 3

1

我认为您可能忽略了目录(./include)的权限。

我假设您正在通过网络服务器和 Linux(例如 Apache)运行这个 PHP - 在这种情况下,尝试创建文件的用户帐户将是“apache”或“www-data”(或无论您的网络服务器在哪个用户下运行)。

在您的服务器上 - 查看 ./include 的权限 - 您需要执行以下两项操作之一:

a) 使 ./include 世界可写(因此“apache”用户现在可以在其中创建一个文件)。

b) 将 ./include 的所有者或组更改为“apache”,以便它可以在其中创建一个文件。

您的 PHP 很好 - 这是它试图在其中创建文件的文件夹的权限,而不是。

于 2012-07-01T13:19:42.553 回答
-2

您必须更改目录“include”的所有权并将其设置为 Web 服务器的用户,并将权限设置为合理的值:

$ sudo chow www-data include 
$ sudo chmod 755 include 

如果您不知道您的网络服务器由哪个用户运行,您可以在全球范围内打开包含目录权限:

$ sudo chmod 1777 include

创建catalogo.xml后,您检查包含目录:

$ sudo ls -al include
-rwxr-xr-x   1 http web     4096 May  5 15:37 catalogo-xml

现在您可以更改目录“include”的所有权并将其设置为 Web 服务器的用户(http)并将权限重置为合理的值:

$ sudo chow http include 
$ sudo chmod 755 include 

另见 chmod、chown 和 ls 的手册:

$ man chmod
$ man chown
$ man ls
于 2012-07-01T13:18:59.170 回答
-3

如果您使用终端并转到将在其中创建文件的文件夹的父级,该文件夹是包含文件夹的父级,然后输入命令:

chmod 777 include

这应该会更改此文件夹的权限,因此您不会再收到权限被拒绝错误。如果你尝试这个命令:

chmod -R 777 include
于 2012-07-01T13:21:55.190 回答