カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

Windows XAMPPのPHPバージョン切り替え

WindowsでXAMPPを使ってPHPの開発をしているとPHPの特定のバージョンで動作検証がしたい!ということがあると思います。
そんな時に手軽にPHPのバージョンを切り替えできる方法があったのでご紹介します。

※XAMPPはC:\xamppにインストールされている条件での説明となります。

まずはSourceForgeにて公開されているXAMPPの過去のバージョンをダウンロードします。
https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

XAMPPのバージョン=PHPのバージョンなので、検証したいバージョンのXAMPPのZIP形式をダウンロードします。
ここでは例として7.4.19をダウンロードしたと仮定します。
ダウンロードしたら解凍しましょう。

前準備としてC:\xamppにある「php」フォルダーをリネームします。
PHPのバージョンに合わせてリネームしましょう。
PHPバージョンが8.0.6であれば「php」を「php8.0.6」にリネームします。
次にC:\xampp\apache\conf\extraにある「httpd-xampp.conf」を「httpd-xampp.conf.8.0.6」にリネームします。
これで前準備は完了です。

次にダウンロードして解凍したxamppフォルダーにある「php」フォルダーを「php7.4.19」にリネームし、C:\xampp内に入れます。
そしてapache\conf\extraにある「httpd-xampp.conf」を「httpd-xampp.conf.7.4.19」にリネームし、C:\xampp\apache\conf\extra内に入れます。

コマンドプロンプトを管理者として実行します。
C:\xamppに移動し次のコマンドを実行します。

mklink /D php php7.4.19

C:\xampp\apache\conf\extraに移動し次のコマンドを実行します。

mklink httpd-xampp.conf httpd-xampp.conf.7.4.19

こうすることでバージョンが付加されたフォルダーであってもシンボリックリンクでアクセスすることが出来るようになります。
別のバージョンに切り替えたいときはシンボリックリンクを作り直せばいいということになります。

346 views

WindowsでXAMPPを使ってLaravel環境構築

WindowsでLaravelでの開発を行うために、XAMPPとComposer・Node.jsをインストールしてLaravelの開発環境を構築します。
少し長いですがお付き合いください。

XAMPPのインストール

まずはXAMPPのサイトからインストーラーをダウンロード
https://www.apachefriends.org/jp/

ダウンロードしたインストーラーをダブルクリックしセットアップを開始します。
セキュリティソフトがインストールされているとインストールが遅くなりますというようなメッセージが表示されますが、「Yes」を押してそのまま続行します。

UAC(ユーザーアカウントコントロール)に関するメッセージが表示されて、「C:¥Program Files」にインストールするのは避けて下さいということのようです。
「OK」を押します。

セットアップウィザードが表示されたら「Next」をクリック

インストールする機能の選択画面になりますが、デフォルトで全て選択されているのでそのまま次へ行きます。

続きを読む…»

434 views

さくらのレンタルサーバーにLaravelをインストール

さくらのレンタルサーバーにLaravelをインストールしてみました。

プランがスタンダード以上である必要があります。(SSHログインができないためです)

Windows PowerShell等を使ってSSHでログインします。

ログインが出来たら現在のディレクトリを確認してみましょう。

% pwd
/home/{username}

ユーザーのホームディレクトリにいることを確認できればOK。

Composerのインストール

LaravelをインストールするためにComposerが必要なのでインストールします。

% curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.0.14) successfully installed to: /home/{username}/composer.phar
Use it: php composer.phar

カレントディレクトリにcomposer.pharというファイルがあればインストール成功です。
念のため、インストールが出来ているか確認してみましょう。
次のコマンドを入力してください。

% php composer.phar

続きを読む…»

609 views

ファイルを添付してメール送信3

PHPのmb_send_mail関数でファイルを添付してメールを送信するスクリプト

$to   = "mailto@example.jp";
$from = "mailfrom@example.jp";

$subject  = "件名";

$mailbody = "メール本文\n";

$boundary = md5(uniqid(rand())); //バウンダリー文字(パートの境界)


$header = "From: $to\n"
        . "Reply-To: $from\n"
        . "X-Mailer: PHP/".phpversion()."\n"
        . "MIME-version: 1.0\n"
        . "Content-Type: multipart/mixed;\n"
        . "\tboundary=\"$boundary\"\n";

$msg = "This is a multi-part message in MIME format.\n\n"
     . "--$boundary\n"
     . "Content-Type: text/plain; charset=iso-2022-jp\n"
     . "Content-Transfer-Encoding: 7bit\n\n"

     . $mailbody."\n"

     . "\n";


// 画像(upfileという名前でアップロードされたとする)
if($_FILES["upfile"]["error"] == UPLOAD_ERR_OK) {

    $tmp   = $_FILES["upfile"]["tmp_name"];
    $name  = $_FILES["upfile"]["name"];
    $size  = $_FILES["upfile"]["size"];

    $array = explode(".", $name);
    $nr    = @count($array);
    $ext   = $array[$nr - 1];

    $name  = date("U").".".$ext;

    $fp = fopen($tmp, "r");
    $contents = fread($fp, filesize($tmp));
    fclose($fp);
    $f_encoded = chunk_split(base64_encode($contents)); //エンコード

    $msg .= "--$boundary\n"
         . "Content-Type: application/octet-stream;\n"
         . "\tname=\"$name\"\n"
         . "Content-Transfer-Encoding: base64\n"
         . "Content-Disposition: attachment;\n"
         . "\tfilename=\"$name\"\n\n"
         . "$f_encoded\n"
         . "\n";

} //[end if]


// language establish
mb_language("ja");

// original encoding
$orgEncoding = mb_internal_encoding();

// specify internal encoding
mb_internal_encoding("utf-8") ;


//メール送信
if(!mb_send_mail($mailto, $subject, $msg, $header)) {
    echo "メールの送信に失敗しました。";
}

// internal encoding take back
mb_internal_encoding($orgEncoding);
199 views

外部サーバーのファイル有無を調べる

PHPにはファイルの有無を調べるfile_existsという便利な関数がありますが、
外部サーバーのファイルを確認することはできません。

そこで、HTTPヘッダーを取得し、ステータスコードからファイルの有無を確認してみましょう。

まずはHTTPヘッダーを取得。

$response = get_headers([任意のURL]);

取得したヘッダーからステータスコードを抜き出す。
ステータスコードは配列で返ってきたヘッダーの先頭にあるので、$response[0]の中から数字3桁をpreg_matchを使って抜き出します。

preg_match("/.*(\d{3}).*/", $response[0], $matches);

HTTPステータスコードを数値に変換。

$response_code = intval($matches[1]);

ステータスコードが200であればファイルが存在する、ということになります。


関数を作ると次のような感じになります。

function myFileExists($str_path)
{
    // HTTPヘッダーを取得
    $response = get_headers($str_path);

    // HTTPステータスコードを抜き出す
    if(preg_match("/.*(\d{3}).*/", $response[0], $matches)) {

        // HTTPステータスコードを取得
        $response_code = intval($matches[1]);

        if($response_code == 200) {

            return true;

        } else {

            return false;

        }

    } else {

        return false;

    }
}
457 views