2011-10-27 5 views
3

PHPファイルから起動されるフォルダ "fold"に単純なPythonスクリプトがあります。同じディレクトリにファイルを作成し、PHPに戻ります。pythonスクリプトがファイルを作成できるようにするための最も良い/最も簡単なApacheサーバー/フォルダ設定は何ですか?

f = open("t.txt","w") 
f.write("test") 
f.close() 

あなたはしてPHPからそれを呼び出すことができます。

$proc=proc_open("fold/simple.py",array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w')),$pipes); 

または

execute("python fold/simple.py"); 

など。私には論理的に思えた

の設定があった。

  • 私は、フォルダの所有者とpythonファイルの間にapacheグループを追加しました。
  • 私はそのフォルダの上にグループの書き込みを許可しました。
  • pythonファイルをすべてに対して実行可能に設定しました。

これは正常なようですか?しかし、PHPから報告されたエラーは、書き込み権がないことです。私はまた、PHPからユーザをテストしました:

echo 'current user :'.exec('whoami'); 

これは明らかに同名のグループに属しています。

だから、どこが間違っていますか、どの設定が最高と最高のバランスを満足させていますか?ありがとう!

+0

まあ明白な答えは、ちょうど '777'にchmodしていますあなたがこれをやりたくない理由がありますか?また、 'no write rights'エラーを生成するコードは何ですか?あなたはこの結論に来るために何を(そしてどこで)チェックしていますか? – DaveRandom

+0

もちろん、chmod 777は最も単純な解決策ですが、セキュリティ上の懸念から最悪の可能性があります。エラーを取得するには、標準エラーストリームをPHPにパイプし、その正確なテキストを思い出しましたが、書き込み権限がフォルダに対して無効になっているのは通常のPythonエラーでした。 – grokkaine

+0

私は実際にインターネット上でこのための良いレシピを見つけることに驚いています、私はこれで始まるすべてのPython Web開発チュートリアルを期待しました! – grokkaine

答えて

0

あなたのプログラムでファイルを作成するためだけのディレクトリを作成し、777(chmod -R 777ファイル)にアクセス権を設定し、他のディレクトリは755にする必要があります。セキュリティ上の理由から。

0

誰もが言ったように、一般的に777の権利を持つディレクトリを設定するのは良いことではありません!あなたのスクリプトがどこで動作しているのか分かっていれば必要ありません!

あなたの質問に答えるには、解決策は、書き込みたいフォルダにapache:apacheの権限を変更する必要があります。これより多くのファイルの相対パスに依存しないでください実行/読み取り/書き込みが、常に絶対パスを指定します:Pythonであなたが何かのように書きたいファイル名を付加これを行うことができます...

from os.path import dirname, abspath 
basedir = dirname(abspath(__file__)) + '/' 
関連する問題