初めてのPHP サンプルコードの在処

サンプルコードを写経する作業がきついので、サンプルコードを引っ張ってきて動作確認をしたいときありますよね?

そんな時はこちら
リンク[https://github.com/oreillymedia/Learning_PHP]

こんな…ありがとうございます!なんていうのは少し早くて、対応表の見方が少々難解なので書いておきます。

display-code/に各章に記載してるサンプルコードがあります。また、そのディレクトリ下(例: display-code/ data-groups←4章を指す)に、toc.txtなるものが存在します。こちらは、各章内のサンプルコードとの対応表です。

PHPの実行環境がEC2かローカルかを簡易的に判定する

概要

PHPUnitで自動テストをしていますが、ローカル環境では動かない機能のテストが一部あったため、実行環境を判定してスキップしてやろうって話。

目標

  • 実行環境の判定関数を作りたいので、適当な判定条件を作る。

条件

  • 本番環境とテスト環境ではテストを実行したいが、ローカル環境では特定のテストを実行したくないので、これらを区別する必要がある。
  • 本番環境とテスト環境はAWSのEC2上で動いている。
  • ローカルの開発環境はxamppやらVM+vagrantやらDockerやら各々色々。
  • PHPUnitはコンソールから直接実行する場合もある。

結果

東京リージョンのEC2を判定する例

function is_local() {
    if (strpos(gethostname(), 'ap-northeast-1.compute.internal') === false) {
        return true;
    }
    return false;
}

備考

  • 「アジアパシフィック (東京)」リージョンのEC2インスタンスはhostnameが ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal といった形式になるようで、ローカルの開発環境ではこうはならないため、都合が良いと判断し採用。
  • $_SERVER['HOSTNAME'] は実行条件によってEC2インスタンス上でもNULLになってしまう場合があったため不採用。
  • gethostname() の挙動が安定しないようなことがあれば再考。
  • PHPの実行時にenvを宣言するみたいなことができるらしく、本来はそうした方がスマートなのかなと思うけど今回は見送り。

wp-config.php が反映されない

解決したので記事書きます。
原因は簡単(BOM)だったのですが、見落とす可能性は高そうです。

現象

WordPressの設定ファイルである「wp-config.php」を編集したが、変更内容が反映されない。

試したこと

  1. 適当に検索してみたところ、編集範囲の外に記述していないかなどが出てきたが、今回は関係が無かった。(権限関係でそもそも編集できないなども出てきたが、今回の現象とは無関係)
  2. 自分が編集しているファイル以外のファイルがロードされている可能性を考えて $ find / -name "wp-config.php" したが、他に同一名のファイルはサーバ上に無かった。
  3. 何かしらブラウザのキャッシュが悪さしている可能性を考えてキャッシュを消してページを読み込んだが、変更内容は反映されていなかった。
  4. 公式のリファレンスを参照してみたが、有用な情報はなかった。
  5. Google is GOD 救済を得た。

解決

適当にググってこちらの情報に行き着いた。

原因は、TeraPadで編集して、保存がUTF-8のBOM無じゃなかったから。
BOM無という言葉はないが、UTF-8Nがそれらしい。未確認だけど、試したら解決した。

WordPress wp-config.phpが反映しない | weblogs

vimで適当に編集していたのでBOMとか全く気にしていなかった。
こんなところでもBOMに苦しめられるとは思わなんだ。

vimでBOMの有無を確認したところ、見事にbomが付いていたので消し飛ばして解決。

※vimにて

:set bomb?
> bomb

:set nobomb
:set bomb?
> nobomb

参考: VimでのBOMの取り扱い – Qiita

wp-configの中にUTF-8のBOM無しで保存するようにと、かなりわかりやすい注意書きがあったので、そこが目に入っていれば気がついたかもしれない。

nginxでbasic認証してみた

1.動機

・リンクを知られていると誰でも見れるのは少し気持ち悪いなと感じたため

2.環境

・ubuntu 20.04.1 LTS(64bit)
 visualboxの仮想環境
・nginx 1.18.0
・apache2-utils
 →htpasswd作成用

3.手順

① htpasswdで認証情報を作成
  →下記コマンド実行後、設定パスワードを入力

$htpasswd -c (パス)/.htpasswd (ユーザー名)

② ①で設定したファイルをnginxで読み込む


  ・/devにアクセスした際に認証をかけたい場合、
   /etc/nginx/sites-availavle/defaultを下のように編集
  
  location /dev {
    auth_basic “認証画面で表示する文言”;
    auth_basic_user_fire ①で設定したパス;
    …
  }

③ nginxの設定再読み込み

$nginx -s reload
$service nginx restart

④ 完成
  ①で設定したユーザー名とパスワードを入力してログイン

Termiusでkeepaliveを設定する

Putty? TeraTerm? 時代はTermius🌊

Termiusでkeepaliveを設定するのに少し手間取ったので備忘録として書いておきます。

□設定方法

①Termiusを開き、左上のハンバーガー(っぽい)メニューを選択

②メニュー内の「 Terminal 」を選択

③メニュー下部の「 Keepalive Interval 」を設定
※ミリ秒で設定するので、20秒であれば、20000と入力する必要あり💦

以上で設定完了です!

余談ですが、ダークモードは①のハンバーガーメニュー下部にあります✨