我有一个PHP语言函数,可以在请求时创建一个xml文件。
if(($file= fopen("./include/catalogo.xml", "w"))==false){echo 'non creo il file'; return false;}
无法创建"目录.xml",权限被拒绝。我知道我应该尝试更改权限,但是如果文件不存在,该怎么办?或者,我忽略了什么?
我认为您可能忽略了目录(./include)的权限。
我假设您通过Web服务器和Linux(例如Apache)运行此PHP - 在这种情况下,尝试创建文件的用户帐户将是"apache"或"www-data"(或您的Web服务器运行的任何用户)。
在您的服务器上 - 查看 ./include 的权限 - 您需要执行以下两项操作之一:
a) 使 ./include world 可写(因此"Apache"用户现在可以在其中创建一个文件)。
b) 将 ./include 的所有者或组更改为"Apache",以便它可以在其中创建一个文件。
您的PHP很好 - 这是它尝试在其中创建文件的文件夹的权限,而不是。
您必须更改目录"include"的所有权并将其设置为Web服务器的用户,并将权限设置为合理的值:
$ sudo chow www-data include
$ sudo chmod 755 include
如果您不知道您的 Web 服务器由哪个用户运行,则可以在全球范围内打开包含目录权限:
$ 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
如果您使用终端并转到将在其中创建文件的文件夹的父文件夹,即包含文件夹的父文件夹并键入以下命令:
chmod 777 include
这应该会更改此文件夹的权限,因此您不会再收到权限被拒绝错误。如果您尝试此命令:
chmod -R 777 include