2010-12-27 7 views
6

インストールのために私のサーバーにMediaWikiソフトウェアをダウンロードしました。解凍後、PHPファイルが実行可能ではないことに気がつきました。すべてのPHPファイルを実行可能にする(再帰的に)

私はchmod +x *.php*(.php5ファイルもあります)を実行しましたが、サブディレクトリでは機能しませんでした。

サブフォルダを再帰的にスキャンするMediaWikiフォルダ内のすべてのPHPスクリプトに実行可能フラグを追加するにはどうすればよいですか?

ありがとうございます。

+2

すべてのファイルを実行可能にする必要はありません。通常のPHPインクルードスクリプトはフラグを必要としません。それはコマンドラインスクリプトのためだけに推奨されています。したがって、いくつかの 'chmod + x */*。php'と' chmod + x */*/*。php'を適切なtoolsフォルダでのみ使用してください。 – mario

+0

@mario、私が正しく思い出したのは、 "X Bit Hack"を利用する(おそらく珍しいが)サーバーの設定だ。 –

+0

常にchmodコマンドを修飾する必要があります。 'chmod a + x * .php *'はユーザ、グループ、そしてワールドの実行ビットを設定します。これは暗黙のうちにあなたがやっていることですが、はっきりしています。状況に応じて、ユーザーとグループ( 'chmod ug + x')の実行可能ファイルを設定するだけでよいでしょう。もしこれがうまくいくならば、そうするべきです。 – Sorpigal

答えて

13

MediaWikiのディレクトリで使用bashの

find . -iname "*.php" | xargs chmod +x 
+7

ファイル名にスペースが含まれていることを確認するには、 : 'find。 -iname '* .php' -print0 | xargs -0 chmod + x' –

+0

右。白い文字を使ってファイルを命名するのは悪い;)私はMediaWikiが良いソフトウェアだと思った。 – shfx

+0

実際、Robert氏のコメントはMediaWikiには当てはまりませんが、一般的な使用方法については覚えておいてください。 –

2

*.php*は、任意のディレクトリにマッチしないので、それを含んでいないので、サブディレクトリでは動作しません。

したがって、設定するビットはfind ./ -iname "*.php*" -exec chmod 755 {} \;のようにしてください。

+0

chmodは複数のファイルを一度に処理できるので、この操作はパラレルで失敗しないので、 '+ 'の代わりに'; \ 'を使用して '-exec'を閉じます。 – Sorpigal

+0

'* .php *'はサブディレクトリではなく.phpと.php5にマッチすると考えられました; –

+0

結果のリスト内の項目の量がわからないときは、 '+'を使わないでください。これはあなたのスクリプトにBohrbugを導入します。リストが十分な大きさであれば、実行可能なコマンドラインの最大長を超えることになります(OK、それは2Mバイトより大きいが、それでも安全ではありません) – karatedog

関連する問題