ドキュメント ルート内にファイルを作成するには、PHP プロセスにディレクトリへの書き込み権限が必要です。通常 (常にではありませんが)、PHP は Web サーバーを実行するのと同じユーザーとして実行されます。このユーザーの名前は、システムによって異なります。Ubuntu と Debian では、ユーザーは と呼ばれますがwww-data
、他のシステムではwww
、 またはapache
、 またはapache2
. 一部のシステムでは、root
.
server superglobal: の値を調べることで、PHP がどのユーザーとして実行されているかを知ることができます $_SERVER['USER']
。 phpinfo()
このようなものを簡単に見る方法を提供します。通常、PHP ユーザーは Web サーバーのユーザーと同じです (常にではありません)。
ディレクトリの所有権とパーミッションの設定は、まったく別のトピックです。使用しているオペレーティング システム、サーバーに対するアクセス権とパーミッション、およびその他の多くのものによって異なります。これに関するポインタが必要な場合は、 serverfault.com から始めることができます。
幸運を。
[編集] OK、あなたが として実行していて、...apache
に新しいディレクトリを作成しようとしている/var/www/blah/mydomain.com/htdocs/
場合、次を実行すると:
> ls -splad /var/www/blah/mydomain.com/htdocs
次のような表示が期待されます。
4 drwxr-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
2 つの興味深い部分があります。
drwxr-xr-x
意味: d
= ディレクトリ; rwx
= ユーザーには読み取り、書き込み、実行があります。r-x
= グループには読み取りと実行のみがあります。r-x
= 誰もが読み取りと実行のみを持っています。
-apache apache
最初のものはファイル/ディレクトリを所有するユーザーの名前で、2 番目のものはファイル/ディレクトリを所有するグループの名前です。
したがって、次のようなものを見た場合:
4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
ディレクトリは(apacheではなく)によって所有されており、によってグループ化されていても、ディレクトリはグループ書き込み可能ではないため、機能しません。このシナリオでは、グループ書き込み権限 ( ) を追加するだけで、準備完了です。root
apache
chmod g+w /var/www/blah/mydomain.com/htdocs
他に表示されるものは次のとおりです。
4 drw-r-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
この場合、所有権は問題ありませんが、ディレクトリはその所有者によって書き込み可能ではありません。これは、所有者の書き込み権限を追加することで修正できますchmod u+w /var/www/blah/mydomain.com/htdocs
。
他にもたくさんのバリエーションがありますが、これが役立つかもしれません。