5

ディレクトリの内容と同じように、ディレクトリを777にchmodしました。それでも、「許可が拒否されました」というエラーが表示されます。ファイルのアクセス許可に関係なく、Apache がグループ/所有者でない場合、PHP はこのエラーをスローしますか? 失敗した呼び出しは次のとおりです。

rename('/correct/path/to/dir/1', '/correct/path/to/dir/2');
4

6 に答える 6

12

上位レベルのディレクトリを編集しているため、PHP ユーザーはそのディレクトリへの書き込みアクセス権を持っている必要があります。

于 2008-10-12T21:23:32.197 に答える
2

明確にするために、php は実際の所有権を持つディレクトリの名前のみを変更できます。

-rwxrwxrwx user   user   temp/
-rwxr-xr-x apache apache temp2/
-rw-r--r-- user   user   script.php

script.php がこれら 2 つのディレクトリの名前を変更しようとしているとします。

// this operation fails as PHP (running as apache) does not own "temp",
// despite having write permissions    
rename('temp', 'temp.bak');

// this operation is successful as PHP owns "temp2"
rename('temp2, 'temp.bak'); 
于 2008-10-12T21:48:30.837 に答える
2

これはおそらく、apache が親ディレクトリの所有者ではないためです。ファイルの名前を変更 (または移動) することは、基本的に新しいファイルを作成することと同じです。

于 2008-10-12T21:24:38.437 に答える
1

このような状況に役立つもう 1 つの方法は、実際にアクセス許可を下げてみることです。アクセス許可の設定が高すぎるために、apache がアプリケーションのアクセス許可を拒否する場合を見てきました。私の推測では、これは適切なセキュリティ プラクティスを促進するためのものです。

于 2008-10-12T22:03:23.833 に答える
0

次のスクリプトを実行してみてください。

print_r(posix_getpwuid(getmyuid()));
print_r(pathinfo($YOUR_PATH));

そして、それが何を返すかを見てください。

于 2008-10-12T21:23:13.727 に答える