共用サーバ ーに “phpqrcode” をインストール そして・・・QRコード出力

自分のことになりますが・・・本日、ちょっとうれしいことがありました。
なんとなーく、PHPでQRコードを出力ができないか・・・再挑戦してみたところ上手く出力ができました。
そのことについて書きたいと思います。

【目的】
phpqrcode ライブラリを使って、QRコードを出力ができないか。
また、共有レンタルサーバーで動かすことができないか。

【お願い】
共用サーバーでpearライブラリではなく、phpqrcodeライブラリを使用します
pearライブラリではないので注意になります。

【前提条件】
・共用レンタルサーバー:さくらのレンタルサーバー (有料サービス) に契約している。
・サブドメインの設定が出来ている。
今回は、自分のドメインなので、設定する場合は個々に設定をお願いします。
・FTPクライアントソフト(接続できる状態)

【開発環境】
・phpバージョン:PHP8.3.8 (当時)

【ディレクトリ図】
設定方法が色々ありますが・・・
今回は自分が設定した方法で書きます。

   /
   └home
     └[契約ID]
         ├www
         ├~省略~
         └tmyinsight.net
                  ├~省略~
                  ├PEAR_SYSTEM
                  ├QRCODE_SYSTEM
                  │     └phpqrcode
                  │         ├bindings
                  │         ├cache
                  │         ├tools
                  │         ├~省略~
                  │         └qrlib.php
                  │          
                  │          
                  │
                  │
                  │
                  └public_html
                        ├~省略~
                        ├index.html
                        ├www2.tmyinsigt.net
                        │     ├~省略~
                        │     └index.php
                        │
                        └create.tmyinsight.net
                              └qr_code
                                 ├~省略~
                                 ├pic (パーミッション707)
                                 └index.php
                      

【設定方法】
1. phpqrcodeをインストール
1.1 作業PCにPHP QR Codeより、"download" を左クリックし、" releases"を左クリックする。
1.2 “phpqrcode-2010100721_1.1.4.zip"(当時) をダウンロードする。
1.3 “phpqrcode-2010100721_1.1.4.zip"(当時) を解凍する。
1.4 “phpqrcode" の中身を確認する。

bindings(ディレクトリ) 
cache(ディレクトリ)
tools(ディレクトリ)
~~省略~~
qrlib.php

1.5 FTPクライアントを起動する。共用サーバに接続する。
1.6 “QRCODE_SYSTEM" というディレクトリを作成する。作成後、移動する。
1.7 “1.4" で解凍した “ディレクトリ" と “ファイル" の一式をアップロードする。
以上、インストールが完了。

2. php と PHP8.3.8 の設定 と さくらのレンタルサーバー -サーバーコントロールパネル- の設定
【警告】
現在のサーバ環境の情報を知る必要があります。
情報をするファイルを作成しますが、契約IDまで出力されてしまいますので、完了後は必ず削除するようにお願いします。
また、"FTPの設定の作業" と さくらのレンタルサーバー -サーバーコントロールパネル- の設定" いったりきたりと設定することになりますので注意して下さい。

2.1 FTPクライアントを起動する。共用サーバに接続する。
2.2 “public_html" → “create.tmyinsight.net" に移動する。
2.3 “qr_code" のディレクトリを作成する。また、移動する。
2.4 サーバ環境 かつ phpの情報を確認する。
2.4.1 “php_info.php" のファイルを作成して、以下のソースコードを入力する。

<?php

   phpinfo( );

?>

2.4.2 “create.tmyinsight.net/qr_code/php_info.php" をブラウザで開く。サーバ環境とphpバージョンを確認する。
2.4.3 サーバ環境の情報より “include_path" の値を確認してメモする。

.:/usr/local/php/8.3/lib/php

運営会社より phpバージョンが変更された場合は、設定を変更する必要がありますので注意して下さい。
2.4.4 FTPクライアントの設定を一時停止します。

2.5 さくらのレンタルサーバー -サーバーコントロールパネル- をブラウザで接続してログインする。
2.5.1 項目:スクリプト設定 → PHP.ini設定
テキストボックスに色々な設定された値が出力されます。

【変更前】

extension = imagick.so
apc.enable_cli = 1
memory_limit = 512M
output_buffering = off
include_path = .:/usr/local/php/8.3/lib/php

【変更後】

extension = imagick.so
apc.enable_cli = 1
memory_limit = 512M
output_buffering = off
include_path = .:/usr/local/php/8.3/lib/php:/home/[契約ID]/www/tmyinsight.net/PEAR_SYSTEM/PEAR:/home/[契約ID]/www/tmyinsight.net/QRCODE_SYSTEM

2.5.2 “保存する" をクリックする。
2.5.3 これで設定が完了になります。

2.6 “2.4.4" の続きになります。
2.6.1 もう1度 “create.tmyinsight.net/qr_code/php_info.php" をブラウザで開く。サーバ環境とphpバージョンを確認する。
2.6.2 サーバ環境の情報より “include_path" の値を確認する。
【変更前】

.:/usr/local/php/8.3/lib/php

【変更後】

.:/usr/local/php/8.3/lib/php:/home/[契約ID]/www/tmyinsight.net/PEAR_SYSTEM/PEAR:/home/[契約ID]/www/tmyinsight.net/QRCODE_SYSTEM

“変更後" の値であれば設定が完了になります。
2.6.3 “php_info.php" を削除する。
FTPクライアントに接続する。
“public_html" → “create.tmyinsight.net" → “qr_code" に移動する。
“php_info.php" のファイルを削除する。

2.7 実際にQRコードを出力する。
2.7.1 FTPクライアントを起動する。共用サーバに接続する。
2.7.2 “pic" というディレクトリを作成する
また、パーミッション を"707″ にする。
2.7.3 “index.php" というファイルを作成し、以下のソースコードを入力して上書き保存する。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>QRcode生成</title>
    <!-- BootstrapのCSS読み込み -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- jQuery読み込み -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- BootstrapのJS読み込み -->
    <script src="js/bootstrap.min.js"></script>
  </head>
  <body>
	<div class="container">
		<h3>QRcode生成</h3>
		<h6>Ver1.0.0</h6>
	<!--	<div class="container"> -->
			<form class="form-horizontal" action="index.php" method="get">
				<div class="form-group">
					<div class="col-xs-10">
						<label>QRcode生成</label>
						<input type="text" class="form-control input-lg" name="comment" placeholder="Hallo World">
					</div>
				</div>
				<div class="form-group">
					<div class="col-xs-10">
						<button type="submit" class="btn btn-default btn-lg">変換</button>
					</div>
				</div>
			</form>
	<!--	</div> -->
		<?php
			#文字入力
			$comment = $_GET['comment'];

			if($comment == ""){
				;
				exit(1);
			}
			
			$qrcode = $comment;
			print "<font size=\"4\">".$qrcode."</font><br /><br /><br />";		

			#ライブラリ読み込み
			require_once 'phpqrcode/qrlib.php';
			#保存先
			$filepath = 'pic/qr.png';
			#qrcode生成 
			QRcode::png($qrcode, $filepath, QR_ECLEVEL_M, 6);
		?>
		<img src="pic/qr.png">
		<?php
			#画像消去
			imagedestroy($filepath);
		?>
	</div>
  </body>
</html>

これで完了になる。
実際に https://create.tmyinsight.net/qr_code/index.phpをブラウザで確認する。


※CSS・scriptなどの設定がされていますが、その設定しなくても動きます。。。

【参考文献】
QUIITさん -PHPでcomposerを使わずにQRコードを作成する (@kaitaku
(Takumi Kaibara さん))-

【商標情報】
PHP Qr Code さん -公式サイト-

【使用サービス情報】
さくらのレンタルサーバー さん -公式サイト-