7

この投稿のタイトルはほとんど自明なので、コードにジャンプします:

echo sprintf('%o', fileperms('test.txt'))."<br/>";

fopen("test.txt", "w");

そしてこれで私は得る:

100777
fopen(test.txt): failed to open stream: Permission denied

何か案は ?

編集:問題が解決しました:サーバー上に正しく構成されていないアクセス制御リストがありました。

ありがとう !

4

4 に答える 4

6

ファイルには書き込み/読み取り権限がありますが、フォルダーには権限がない可能性があると思います。Web サイトのパブリック ルートでこれを試して、ファイルの読み取りまたは書き込みができるかどうかを確認してください。

セーフ モード ( http://php.net/manual/en/function.fopen.php ) の場合、php ドキュメントには次のように書かれています。

注: セーフ モードが有効になっている場合、PHP は、スクリプトが動作しているディレクトリが、実行中のスクリプトと同じ UID (所有者) を持っているかどうかをチェックします。

最後に、書き込もうとしているフォルダーに php がアクセスできることも確認する必要があります。

于 2012-04-29T21:26:13.887 に答える
0

あなたが抱えている問題はファイルの所有権の問題だと思います...これを使用して問題を見つけることができます

error_reporting(E_ALL);
ini_set('display_errors','On');

$file = "a.jpg";

echo sprintf ( '%o', fileperms ( $file ) ), PHP_EOL;
echo posix_getpwuid ( fileowner ( $file ) ), PHP_EOL; // Get Owner
echo posix_getpwuid ( posix_getuid () ), PHP_EOL; // Get User

if (is_file ( $file )) {
    echo "is_file", PHP_EOL;
    ;
}

if (is_readable ( $file )) {
    echo "is_readable", PHP_EOL;
    ;
}

if (is_writable ( $file )) {
    echo "is_readable", PHP_EOL;
}

fopen ( $file, "w" );
于 2012-04-30T00:36:46.707 に答える