0

私のプロジェクト ディレクトリは /public_html/test/ です

所有権と許可は以下のとおりです。

drwxrwsr-x 8 lamp apache 4096 Apr  8 10:46 public_html
drwxrwsr-x 6 lamp apache 4096 Apr  2 14:58 test

Web アプリケーションがディレクトリを作成し、いくつかのファイルをアップロードし、あるディレクトリからディレクトリ /public_html/test/files/ の下の別のディレクトリにファイルを移動します。

drwxrwsr-x 21 lamp apache 4096 Apr 24 13:58 files

問題は、Webアプリケーションを使用して「mydirectory」というディレクトリを作成したことです。次のように/public_html/test/files/の下に作成されました。

drwxrwsrwx 2 apache apache   4096 Apr 15 13:56 mydirectory

次に、「myfile.jpg」という1つのファイルをアップロードしました。これは、デフォルトで/public_html/test/files/にアップロードされます

-rwxrwxrwx 1 apache apache 595284 Apr 15 13:58 myfile.jpg

次に、私のコードはphp関数「move_uploaded_file」を使用して、ファイルを /public_html/test/files/ から /public_html/test/files/mydirectory/ に移動します。

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory/myfile.jpg');

うまくいきません。これを修正するには?

/public_html/test/files/mydirectory/ の所有権を apache:apache ではなく lamp:apache に変更し、ファイルを再度アップロードすると、move_uploaded_file は正常に動作します。

注: ユーザー「lamp」は「apache」グループに属しています。

===================

PHP Safe_mode は ON でしたが、OFF にすると動作しました :)

4

2 に答える 2

1

問題は許可を得ていません。move_uploaded_file() 関数を間違って使用しています。

正しい使い方は

move_uploaded_file ( string $filename , string $destination )

コードをこれに置き換えます。

move_uploaded_file('/public_html/test/files/myfile.jpg', '/public_html/test/files/mydirectory');

詳細については

http://php.net/manual/en/function.move-uploaded-file.php

于 2013-05-03T13:28:23.183 に答える