3

djangoフレームワークとmod_wsgiを使用してPythonコードを実行しているApachehttpdサーバーがあります。私のview.pyは、プロセスでいくつかのディレクトリを作成する必要がある別のpythonファイルを実行するためにサブプロセス呼び出しを行う必要があります。

ただし、OSERROR 13:ディレクトリを作成しようとしてもアクセスが拒否されました。

/tmpにディレクトリを作成することだけが成功します。

誰かがこの問題を解決する方法について私を導くことができますか?

前もって感謝します!!!

編集: serverfault.comで答えを見つけました。ここでは参照用です。apache2はルートの下で実行されますが、「www-data」グループの下で実行されるプロセスをフォークします。したがって、ファイル/ディレクトリを作成するディレクトリを作成します

sudo mkdir /srv/www/writable

グループを変更する

sudo chgrp www-data /srv/www/writable

グループに書き込みアクセスを許可する

sudo chmod g+w /srv/www/writable

そして、これで完了です。これで、apache2によって実行されるスクリプトを使用して、このディレクトリに任意のファイル/ディレクトリを作成できます。

4

2 に答える 2

3

これはPythonでも実現できることを付け加える価値があるかもしれません

import os
import pwd

path = '/var/www/myapp/foo/'
if not os.path.exists(path):
        os.makedirs(path) # creates with default perms 0777
        uid, gid =  pwd.getpwnam('root').pw_uid, pwd.getpwnam('www-data').pw_uid
        os.chown(path, uid, gid) # set user:group as root:www-data
于 2013-01-09T10:34:26.123 に答える
1

serverfault.comで答えを見つけました。参考までにこちら

apache2はルートの下で実行されますが、「www-data」グループの下で実行されるプロセスをフォークします。したがって、ファイル/ディレクトリを作成するディレクトリを作成します

sudo mkdir / srv / www/writableグループを変更する

sudo chgrp www-data / srv / www/writableグループに書き込みアクセスを許可する

sudo chmod g + w / srv / www/writableこれで完了です。これで、apache2によって実行されるスクリプトを使用して、このディレクトリに任意のファイル/ディレクトリを作成できます。

于 2012-08-05T11:08:46.853 に答える