0

私はPHPを学び、このコードを使用してファイルをアップロードしようとしています:

$destination = "uploads/".$_FILES['userfile']['name'];
move_uploaded_file($_FILES['userfile']['tmp_name'], $destination);

しかし、私は直面しています

ストリームを開くことができませんでした:許可が拒否されました

「uploads」ディレクトリのアクセス許可を変更して、誰でも書き込み可能にすることはできますが、もちろんこれは悪い習慣です。フォルダのアクセス許可は次のとおりです。

drwxr-xr-x 2 loai loai 4096 Dec 30 12:44 uploads

とランニングps aux | grep httpdイールド

loai      6728  0.0  0.0   4368   832 pts/1    S+   18:37   0:00 grep --colour=auto httpd

それで、apacheプロセスは指定されたディレクトリに書き込むことができるべきではありませんか?ありがとう

4

3 に答える 3

1

宛先にフルパスを使用してみてください。何かのようなもの:

/var/www/project/uploads
于 2012-12-30T17:04:46.567 に答える
1

まず、質問へのコメントに記載されているように、ps出力はプロセス(またはWebサーバーが何であれ)grepではなく、プロセス自体を示しています。httpdつまり、おそらくWebサーバーがではなく別のユーザーとして実行されていることを意味しますloai。フォルダの所有権を変更するuploadsか、グループで書き込み可能にしてから、Webサーバーのユーザーを適切なグループに追加します

于 2012-12-30T17:51:02.627 に答える
0

相対パスを使用してそのディレクトリから読み取ることができる場合は、それをchownするだけです。

cd $path_to_your_site_root
chown -R loai:loai uploads
于 2012-12-30T17:45:12.853 に答える