2016-03-28 9 views
1

からbashスクリプトを実行すると、それは/var/www/myweb/に保存され、今私は、PHPからtest.sh呼ば/home/me/でスクリプトを呼び出すようにしようとしていますindex.php私はApacheサーバで実行されているPHPのWebページを持っているPHPのWebページ

と呼ばれ、ウェブページ 。それがないすべてが/home/me/

test.shにFILE1作成されます。index.php

#!/bin/bash 


touch file1 
~                          
~                          
~                          
~ 

を、私はスクリプトを

のindex.phpを呼び出すようにしようとしています:

if ($_GET['run']) 
        { 
              exec('/home/me/test.sh'); 
        } 

残念ながら、これは動作していません、そして、理由は許可の問題であるようです。私は先に行って、/var/www/myweb/

/home/me/test.sh 

からこのコマンドを実行しようと、私はこのエラーを得た:

touch: cannot touch ‘file1’: Permission denied

をこの問題を解決する方法はありますか?

+0

システムによっては、apache2サーバーはユーザー "www-data"または "http"またはその他の設定を使用します。 test.shは実行可能で、適切な権限を持っている必要があります。 –

+0

スクリプトで 'cd'や' chdir() 'を使ったことはありますか? 'ls -ld/var/www/myweb/home/me'は何を返しますか?あなたのコードは、あなたが思うところではおそらく実行しません。 – Amadan

+0

'drwxr-xr-x 29 me me 4096 Mar 27 21:02/home/me/ drwxr-xr-x 4 root www-data 4096 Mar 27 20:22/var/www/html/ –

答えて

1

ディレクトリを変更しない場合は、は/home/me/file1に触れないようにしようとしたが、/var/www/myweb/file1されていません。しかし、/var/www/mywebrootrwxを許可します。 www-dataグループをr-xに、また他の人はr-xにします。 Apacheが実行されているときは、www-dataとして実行しています(www-dataグループ)。新しいファイルの作成を禁止するグループのアクセス許可r-xを取得します。実行するとmeとして実行されていますが、最後にアクセス許可のセットを取るwww-dataグループにはまだ入っていません:まだr-x、まだ書き込めません。

理想的には、あなたはその場所が権限を持っているしたいと思うどこにあるファイルシステムで、約混乱を避けるために、作成されるファイルのフルパスを提供したいmeとグループのdrwxrwxr-x(またはdrwxrwsr-xwww-data

関連する問題