サーバー上にファイルとディレクトリを作成するスクリプト (Joomla) があります。問題は、所有者 99 99 (誰もいない) の下にそれらを作成し、サーバー管理者の助けなしに FTP でそれらを削除または変更できないことです。
move_uploaded_file
phpの機能だと思います。
WHM またはサーバー管理者によるこの問題の解決策はありますか? ftp でデフォルトの所有者を変更できますか?
サーバー上にファイルとディレクトリを作成するスクリプト (Joomla) があります。問題は、所有者 99 99 (誰もいない) の下にそれらを作成し、サーバー管理者の助けなしに FTP でそれらを削除または変更できないことです。
move_uploaded_file
phpの機能だと思います。
WHM またはサーバー管理者によるこの問題の解決策はありますか? ftp でデフォルトの所有者を変更できますか?
何が起こるかというと、HTTP サーバーは「nobody」というユーザーによって実行されており、FTP ユーザーは別のユーザーです。アップロードが行われると、HTTP サーバーはそのユーザー名でファイルを作成しますが、FTP ユーザーにはこれらのファイルを書き込む (または削除する) 権限がありません。
これを修正する最も簡単な方法 (ただし、実際には安全ではありません) は、両方のユーザーを同じグループに追加し、ファイルのアクセス許可を変更して、同じグループのユーザーがこれらのファイルを読み書きできるようにすることです。
管理者が処理する必要がありますが、chmod() を呼び出して、アップロードされたファイルのアクセス許可を変更する必要があります。
それをよりよく説明する:
linux/unix ファイルのパーミッションは、ユーザー (u)、グループ (g)、およびその他 (o) のパーミッションによって構成されます。ここでは、読み取り (r)、書き込み (w)、および実行 (x) の 3 種類のファイル許可についてのみ説明します。したがって、次のようなものになります。
-rw-rw---x 1 jweyrich staff 12288 Oct 24 00:22 avatar.png
PHP スクリプトは "nobody" ユーザーとして (そして、たとえば "nobody" グループによって) 実行されるため、PHP から作成するすべてのファイルは "nobody" ユーザー (およびそのグループ) によって所有されます。ユーザーは、1 つ以上のグループの一部になることができます。
許可の問題を解決するには、FTP ユーザーと「nobody」が共通のグループに属している必要があります。たとえば、管理者がユーザーを「nobody」に配置したとします。彼らが同じグループに入ったら、PHP スクリプトは "rw" (読み取り/書き込み) パーミッションを "nobody" グループ メンバーに与える必要があります。そうするために:
chmod("path_to_your_file", 0770);
0770 は、ここで説明する "u+rwx,g+rwx,o-rwx" と同等です。
その後、「nobody」グループの一部になった FTP ユーザーは、アップロードされたファイルへの読み取り/書き込みアクセス権を持つようになり、ファイルを削除することもできます。次のようになります。
-rwxrwx--- 1 nobody nobody 12288 Oct 24 00:22 avatar.png
これは UNIX ファイルのパーミッションの理想的な入門書ではありませんが、これが役に立てば幸いです。
PHPを実行するユーザーnobody
は、システム管理者によって設定されます。それについてあなたができることは何もありません。
FTPユーザーのIDがわかっている場合は、chown()を試してファイルの所有者を変更できます。ただし、通常、PHP内からこれを行うことは許可されません。
サーバー上のグループの状況によってはchmod
、ファイルのアップロード後にファイルのアクセス権を変更するために使用する場合、FTPアカウントがファイルにアクセスできる可能性があります。
最初にこれを試してください:
chmod($uploaded_file, 0660); // owner+group read+write
それでも問題が解決しない場合は、次のことを試してください。
chmod($uploaded_file, 0666); // global read+write
これらのいずれかにより、FTPアカウントでファイルを使用できるようになります。
サーバー上の他のユーザーがファイルに書き込む可能性があるため、これ0666
はお勧めできませんが、構成によっては、これが唯一の方法です。