開発マシンにSqliteを使用してDrupal 7サイトを作成しました。localhost/ install.phpにアクセスすると、次のように表示されます:Drupalはすでにインストールされています。
共有ホスティング(Windows)にすべてをデプロイした後、サイトは機能しますが、install.phpが再び利用可能になります。匿名ユーザーやサイトがメンテナンスモードの場合でも利用できます。それを無効にするにはどうすればよいですか?または、別の方法で展開する必要がありますか?
インストーラーがチェックするのは、設定ファイルにサイトのデータベース情報が含まれているかどうかです。
これは理論的には単純に聞こえ、install.phpが実行されることはないはずですが、多くのコンポーネントが関係しています。
sites/
ディレクトリにマップできるsites.phpファイルをサポートしています。$db_url
を確認し、インストールを許可するかどうかを決定します。多くのコンポーネントと、それらをすべて正しく設定するための技術的な複雑さのために、install.phpがインストールを許可することを決定する状況に陥るのは非常に簡単です。匿名ユーザーは新しいデータベースを作成できないため、これは通常問題にはなりませんが、それでもまったく間違っているように見えます。
Install.phpを削除することは解決策ですが、技術的にはコアをハッキングしており、将来の展開を不必要に複雑にします。
私は通常、これに対抗するために2つのことを行います。
まず、sites/example.com/
やなどのドメインにちなんで名付けられたディレクトリからサイトを実行し、sites/default
をリンクにします。メインサイトへ。このように、Drupalによって要求されている予期しないドメインは、メインドメインによって処理されます。
次に、このvhostファイルを使用して、本番システムでinstall.phpへのアクセスを常に完全にブロックします。
# ssh -L 8080:127.0.0.1:80 example.com
<Location /install.php>
Deny from all
Allow from 127.0.0.1
</Location>
<Location /update.php>
Deny from all
Allow from 127.0.0.1
</Location>
これにより、Apacheはインストールと更新の両方へのアクセスをブロックします。上部のコメントは、サーバーへのsshトンネルを開いて、トラフィックが127.0.0.1から来ているように見せ、開発者がupdate.phpを実行できるようにする方法を思い出させるものです。
以下のIISで似たようなもの。 notこれをテストしたことに注意してください。 ISSの経験がある方は、この部分を改善できるように更新またはコメントしてください。
<location path="install.php">
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Allow" roles="Administrators" />
</authorization>
</security>
</system.webServer>
</location>
1つの方法は、install.phpファイルを完全に削除することです。別のオプションは、Apacheを介してコンテンツを提供するユーザーが使用できないようにファイルにアクセス許可を設定することです(おそらく)