Docker Hubにある、php-apache イメージで.htaccess使えるようにする | クズリーマンのカス備忘録

Docker Hubにある、php-apache イメージで.htaccess使えるようにする

docker-logo docker
スポンサーリンク

事象

Docker Hubにある、php-apache イメージでつくったコンテナが、.htaccessが使えない。

使えるようにする。

やり方

コンテナ内で下記コマンドを実行してrewrite_moduleを読み込ませる

a2enmod rewrite

↓ 確認

apachectl -M

↓ 後日追記。apache再起動が必要だった。

apachectl -k restart

Dockerのphp-apacheイメージでrewrite_moduleを有効化する | Points & Lines
php-apacheイメージでrewrite_moduleを有効にするDockerのphp-apacheイメージから作成したコンテナ環境で.htaccessによるURL書き換え(リライト)設定が有効にならなかったので対処方法をメモします。環境:php:7.4-apache(docker image), Apache/2...

まじ助かりましたー。

  • a2enmod

っていうのは、モジュールを有効化するコマンドなんですね(R

うまく行かなかったやり方

chatGPT3.5に聞いたら以下の回答があって、一見うまくいきそうだったが、rewrite モジュールが読み込まれなかった。

Docker Hubで提供されている公式のphp:8.1-apacheコンテナでは、Apacheの設定ファイルは通常/etc/apache2ディレクトリに配置されています。

mod_rewriteモジュールを有効にするためには、/etc/apache2ディレクトリ内のhttpd.confファイルを編集する必要があります。しかし、公式のphp:8.1-apacheコンテナでは、httpd.confファイルが分割されているため、直接編集することはおすすめしません。

代わりに、/etc/apache2/conf-availableディレクトリ内にrewrite.loadというファイルを作成し、そのファイルにLoadModule rewrite_module modules/mod_rewrite.soという内容を記述することで、mod_rewriteモジュールを有効にすることができます。

具体的な手順は以下の通りです:

  1. php:8.1-apacheコンテナに入るために、コンテナのシェルにアクセスします。
    docker exec -it [コンテナ名またはID] /bin/bash
    
  2. rewrite.loadファイルを作成します。
    echo "LoadModule rewrite_module modules/mod_rewrite.so" > /etc/apache2/conf-available/rewrite.load
    
  3. rewrite.loadファイルを有効にするために、シンボリックリンクを作成します。
    ln -s /etc/apache2/conf-available/rewrite.load /etc/apache2/conf-enabled/rewrite.load
    
  4. Apacheを再起動します。
    service apache2 restart
    

これにより、mod_rewriteモジュールが有効になります。

注意: 上記の手順は、公式のphp:8.1-apacheコンテナのデフォルトの設定に基づいています。もし、カスタマイズされた設定がある場合は、適宜修正する必要があります。

以上が、php:8.1-apacheコンテナ内でmod_rewriteモジュールを有効にする方法です。


ちなみに、モジュールの場所が実際のコンテナだと違ってて、

/usr/lib/apache2/modules/mod_rewrite.so

が正しいPathなんだが、ただしいPathに書き換えてもうまくいかなった。

コメント

タイトルとURLをコピーしました