要求されたときに xml ファイルを作成する PHP 言語の関数があります。
if(($file= fopen("./include/catalogo.xml", "w"))==false){echo 'non creo il file'; return false;}
「catalogo.xml」を作成できません。権限が拒否されました。アクセス許可を変更する必要があることはわかっていますが、ファイルが存在しない場合はどうすればよいでしょうか? または、私が無視したものはありますか?
要求されたときに xml ファイルを作成する PHP 言語の関数があります。
if(($file= fopen("./include/catalogo.xml", "w"))==false){echo 'non creo il file'; return false;}
「catalogo.xml」を作成できません。権限が拒否されました。アクセス許可を変更する必要があることはわかっていますが、ファイルが存在しない場合はどうすればよいでしょうか? または、私が無視したものはありますか?
ディレクトリ(./include)の権限を無視しているのではないかと思います。
このPHPをWebサーバー経由でLinux(たとえばApacheなど)で実行していると仮定します。この場合、ファイルを作成しようとしているユーザーアカウントは「apache」または「www-data」(またはWebサーバーが実行されているユーザー)。
サーバー上で-./includeの権限を確認してください-次の2つのいずれかを実行する必要があります。
a)./include worldを書き込み可能にします(これで、「apache」ユーザーはその中にファイルを作成できるようになります)。
b)./includeの所有者またはグループを「apache」に変更して、その中にファイルを作成できるようにします。
あなたのPHPは大丈夫です-それはそれがその中にファイルを作成しようとしているフォルダのパーミッションではありません。
ディレクトリ「include」の所有権を変更し、それをWebサーバーのユーザーに設定し、アクセス許可を適切な値に設定する必要があります。
$ sudo chow www-data include
$ sudo chmod 755 include
Webサーバーが実行しているユーザーがわからない場合は、世界中のincludedir権限を開くことができます。
$ 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