DockerのPHP公式イメージでモジュールを追加

PHP公式のDockerイメージを使用する際、モジュールの追加を簡単にする
[shell]docker-php-ext-install[/shell] が用意されている。

[shell]
FROM php:5.4-apache
RUN apt-get update && \
apt-get install -y \
libfreetype6-dev \ # gdに必要
libjpeg62-turbo-dev \ # gdに必要
libpng12-dev && \ # gdに必要
docker-php-ext-install gd mbstring pdo_mysql pdo_mysql mysqli mysql intl
[/shell]

上記では重複して不要なものも入れているので、適宜必要なものだけに修正。

DockerのPHPでMySQL拡張モジュールを使う

VCCWでmod_substituteを使用した文字列置換

大量の画像が保存されたWordPressのちょっとした修正の依頼があったが、画像データまでローカルに持ってくるのが面倒だった。そこで、サーバ側で置換された画像urlを出力して本番環境の画像を表示して作業をすることに。

ローカルではvccwを使用して作業。DBを本番環境からインポートして、search-replaceしておく。

mod_substituteをオン

[bash]$ vagrant ssh[/bash]でサーバに入り、/etc/apache2/mods-available/substitute.load のシンボリックリンクを /etc/apache2/mods-enabled 内に作成。で、apacheを再起動。
[bash]
$ sudo ln -s /etc/apache2/mods-available/substitute.load /etc/apache2/mods-enabled/
$ sudo system apache2 restart
[/bash]

.htaccessに置換の処理を記述

.htaccessに以下を記述。urlは適宜変更を。
phpのファイルを処理する場合、Substituteの置換をする。

AddOutputFilter SUBSTITUTE php

Substitute s%(href|src)=\"http://local_server(/wp-content/uploads/\d+/\d+/[^"]+\.(jpg|png|gif|svg))%$1=\"https://production_server$2%

注意事項

jsで動的に画像を出力する場合などは変換されないので注意。たとえば管理画面のメディアライブラリでは画像が出力されない。ちょっとした修正の場合には問題ないけど、がっつり編集する場合にはちゃんとデータを落としてくるなり環境をしっかり整えないとね。

コマンドラインから.htpasswdを作成

htpasswdコマンドを使って.htpasswdファイルやパスワードを作成できる。

[shell]
// パスワードを標準出力。.htpasswdにコピペで使用可。
$ htpasswd -bn username password

// 既存の.htpasswdに追記。
$ htpasswd -b /path/to/.htpasswd username password

// 新規で.htpasswdを作成。
$ htpasswd -bc /path/to/.htpasswd username password
[/shell]