Windowsへ手軽にLAMP環境を構築できるlaragonへXamppから乗り換えてみました
ローカルの開発用WEBサーバーにはXAMPPを愛用してきましたが、ここ最近立ち上がりでデータベースが頻繁に落ちてしまい、その都度修復作業しなくてはならずとっても面倒でした。それでもごまかしごまかし使ってきましたが、PHP8環境を整えるついでに以前から気になってきたlaragonというlamp環境構築ソフトに乗り換えることにしました。
Laragonのインストール
以下から最新のファイルをダウンロードしてインストールします。手順については検索すると紹介しているサイト様がヒットしますので省略させて頂きます。基本的にはそのままインストールするだけで問題は無さそうです。
https://github.com/leokhoa/laragon/releases
PHPバージョンの追加と選択
laragonはPHPバージョンを簡単に切り替えることが出来ます。
PHPは以下のディレクトリに放り込むだけです。
ダウンロードは以下から。
https://windows.php.net/downloads/releases/archives/
※Windows版なのでご注意を。
お客様によってPHPバージョンが違うことが有りますのでとても便利です。また、PHP7で動いているアプリケーションがPHP8で動作するかのテストが行えるのも良いですね!
バーチャルホストの設定
http://localhost/で表示できるのですが、バーチャルホストの設定を行うことでプロジェクト名+ドメインで表示させることが出来ます。
laragonを立ち上げ、右上の歯車アイコンをクリックすると開くウインドの全般→自動virtual hostsファイルの設定がそれです。
デフォルトでは{name}.testとなっており、https://プロジェクト名.testで表示されます。私は.localとしました。
プロジェクトの作成
バーチャルホストの設定で触れましたが、固有のドメインで表示するにはプロジェクトを作る必要が有ります。
laragonの上で右クリックするとメニューが表示されますので、クイックアプリ作成→Blankと進みます。
sampleというプロジェクトを作ります。
sampleというディレクトリが作られ、windowsのhostsファイルに書き込まれます。
この場合は、https://sample.localで表示されます。
問題点 – センドメールが送信されない
インストールからphpバージョンの追加、データベースの設定とphp myadminの設置~と順調に進み、センドメールが送信されるかのテストを行ってみました。
$result = mb_send_mail($to,$subject,$body,$headers);
こういったよく見かけるセンドメール文ですが、戻り値はfalseで当然送信されません。そもそも何も設定していませんので色々見ていると以下の画面を発見しました。
Gmailを使うことは分かりましたが、そもそも二段階認証を設定していますし、SPFの設定も出来ませんので蹴られるだろうと試すとやはり蹴られました。
ならば!とGoogleアカウントへアプリパスワードを設定し、送信テストを行ってみます。
https://support.google.com/accounts/answer/185833?hl=ja
すると送信完了のメッセージが表示されました!
メールも無事届いていました!
さて、次はPHPから送信しようと公式サイトの説明を読みました。
https://laragon.org/docs/mail-catcher.html
どうやらPHPのmail()関数を使うとメールキャッチャーに表示されるとのこと。
$result = mail($to, $subject, $message);
とりあえずこれだけ書いて試すと、以下の画面が右下に表示されました。
View emailをクリックするとメモ帳にメールの内容が展開される形ですが、文字化けしています。あとメールは実際には送信されません。うーん・・・・。
mb_language("Japanese"); mb_internal_encoding("UTF-8"); $from = "xxx@xxx.xxx"; $to = "xxx@xxx.xxx"; $subject = "日本語サブジェクト"; $body = "○○様 お世話になっております。スタジオキイです。 これはテスト送信です。"; $headers = "X-Priority: 1"."\n"."X-Mailer: PHP/".phpversion(); $headers .= "MIME-Version: 1.0 \n" ; $headers .= "Content-Type: text/plain;charset=ISO-2022-JP \n"; $headers .= "From:{$from}\n"; $subject = mb_convert_encoding($subject, "ISO-2022-JP","AUTO"); $subject = mb_encode_mimeheader($subject); $body = mb_convert_encoding($body, "ISO-2022-JP","AUTO"); $result = mail($to, $subject, $body, $headers);
色々と試すもサブジェクトの文字化けは解消出来ませんでした。そもそも実際にメールを送信して欲しい・・・
fake sendmailと入れ替えてみる
そもそも送信されないのはsendmailがそう作られているのだろうと思い、xamppにも使われているfake sendmailと入れ替えてみました。
https://www.glob.com.au/sendmail/
C:\laragon\bin\sendmail\sendmail.ini
元々のはリネームしてバックアップし、fake sendmailを配置します。sendmail.iniでサーバーの設定を行います。Gmailは駄目なのでxamppでも使っていたヤフーメールを設定しました。
が、送信されない!
$headers = "X-Priority: 1"."\n"."X-Mailer: PHP/".phpversion(); $headers .= "MIME-Version: 1.0 \n" ; $headers .= "Content-Type: text/plain;charset=ISO-2022-JP \n"; //$headers .= "From:{$from}\n"; $subject = mb_convert_encoding($subject, "ISO-2022-JP","AUTO"); $subject = mb_encode_mimeheader($subject); $body = mb_convert_encoding($body, "ISO-2022-JP","AUTO"); $result = mail($to, $subject, $body, $headers);
色々と試した結果、ヘッダーからfromを外すと送信されました。
ただ、これじゃ使い物になりません。試しにWordPressからユーザー追加を行うと招待メールが送信されません。
結局元に戻し、WordPressで試すとバケバケです・・・
ただ、URLなど半角は化けませんので操作は出来ますし、それ以上の便利な機能がlaragonには有りますので慣れていこうかと考えています。あと最近はSMTPを使うことが多く、それならphpのmail関数は使いませんので大丈夫なはず!
以上、laragonについてでした。