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

2022年5月26日

【目的】
PEAR ライブラリを使って、バーコードを出力したい。
どうやって共用サーバにインストールすれば良いのか・・・
書きたいと思います。
【お願い】
共用サーバでpearライブラリが使用出来る・出来ないがあります。。。
今回、バーコードは上手く出来ましたが、別でQEコードのパッケージを試したところ上手く出来ないことが判明しました。
また、解決策があれば探してみたいと思いますが。。。
大変恐縮ですが、共用サーバですべてpearライブラリが使えるというのは、現時点では確認が出来ていないのでご了承下さい。。。

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

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

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

   /
   └home
     └[契約ID]
         ├~省略~
         └tmyinsight.net
                ├~省略~
                ├PEAR_SYSTEM
                │     ├~省略~
                │     ├OS
                │     ├scripts
                │     └PEAR
                │       ├~省略~
                │       └Image
                │          ├Barcode2.php
                │          └Barcode2
                │
                │
                │
                └public_html
                      ├~省略~
                      ├index.html
                      ├www2.tmyinsigt.net
                      │     ├~省略~
                      │     └index.php
                      │
                      └create.tmyinsight.net
                            └barcode
                               ├~省略~
                               ├pic (パーミッション707)
                               └index.php
                      
                      
   

【設定方法】
1. PEARパッケージをインストール
1.1 作業PCにPEARをダウンロードする。
“download" をカーソルに合わせて、右クリックして “名前を付けてリンク先を保存" する。
1.2 “PEAR-1.10.13.tgz"(当時) を解凍する。
1.3 “PEAR-1.10.13.tar"(当時) を解凍する。
1.4 “PEAR-1.10.13" の中身を確認する。

OS(ディレクトリ) 
PEAR(ディレクトリ)
scripts(ディレクトリ)
INSTALL
LICENSE
package.dtd
PEAR.php
README.rst
System.php
template.spec

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

2. Image_Barcode2パッケージをインストール
2.1 Image_Barcode2をダウンロードする。
“download" をカーソルに合わせて、右クリックして “名前を付けてリンク先を保存" する。
2.2 “Image_Barcode2-0.2.3.tgz"(当時) を解凍する。
2.3 “Image_Barcode2-0.2.3.tar"(当時) を解凍する。
2.4 “Image_Barcode2-0.2.3" の中身を確認する。

docs(ディレクトリ)
Image(ディレクトリ)
tests(ディレクトリ)
build.xml
phpunit.xml
README

2.5 FTPクライアントを起動する。共用サーバに接続する。
2.6 “PEAR_SYSTEM" → “PEAR" に移動する。
2.7 “2.4" で解凍した “Image" だけアップロードする。
以上、インストールが完了する。

3. php とPEAR の設定 と starserver -サーバ管理ツール- の設定
【警告】
現在のサーバ環境の情報を知る必要があります。
情報をするファイルを作成しますが、契約IDまで出力されてしまいますので、完了後は必ず削除するようにお願いします。
また、"FTPの設定の作業" と “starserver -サーバ管理ツール- の設定" いったりきたりと設定することになりますので注意して下さい。
3.1 FTPクライアントを起動する。共用サーバに接続する。
3.2 “public_html" → “create.tmyinsight.net" に移動する。
3.3 “barcode" のディレクトリを作成する。また、移動する。

3.4 サーバ環境 かつ phpの情報を確認する。
3.4.1 “php_info.php" のファイルを作成して、以下のソースコードを入力する。

<?php

   phpinfo( );

?>

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

.:/opt/php-7.4.25/data/pear

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

3.5 starserver -サーバ管理ツール- をブラウザで接続してログインする。
3.5.1 項目:ホームページ → PHP環境設定 → ドメイン名:tmyinsight.net “選択" → "phpini直接編集" をクリックする。
テキストボックスに色々な設定された値が出力されます。
【php】の項目の最後に追加文を入れます。
【変更前】

【php】
~~~~~~~省略~~~~~~
enable_dl = On
default_socket_timeout = 60

【変更後】

【php】
~~~~~~~省略~~~~~~
enable_dl = On
default_socket_timeout = 60
include_path = .:/opt/php-7.4.25/data/pear:/home/[契約ID]/tmyinsight.net/PEAR_SYSTEM/PEAR'

3.5.2 “設定する(確認)" をクリックする。
3.5.3 間違えが無ければ “設定する(確定)" をする
3.5.4 これで設定が完了になります。

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

.:/opt/php-7.4.25/data/pear

【変更後】

.:/opt/php-7.4.25/data/pear:/home/[契約ID]/tmyinsight.net/PEAR_SYSTEM/PEAR

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

3.7 実際にバーコード出力する。
3.7.1 FTPクライアントを起動する。共用サーバに接続する。
3.7.2 “pic" というディレクトリを作成する
また、パーミッション を"707″ にする。
3.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>バーコード13桁生成</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>バーコード13桁生成</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>EOSコード(13桁入力)</label>
						<input type="text" class="form-control input-lg" name="comment" placeholder="0000000000000">
					</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
			#13文字入力
			$comment = $_GET['comment'];

			if($comment == ""){
				;
				exit(1);
			}

			if(!preg_match('/^[0-9]+$/', $comment)){
					print "<font size=\"4\">関係ない文字列があります。<br />数字を入力してください。</font>";
					exit(2);
			}
			#文字列の数の判定
			if(strlen($comment) != 13){
					print "<font size=\"4\">文字数が13文字ではありません。<br />必ず13文字入力して下さい。</font>";
					exit(3);
			}


			$eoscord13 = $comment;
			print "<font size=\"4\">".$eoscord13."</font><br /><br /><br />";		
			
			#バーコード生成 
			require_once 'Image/Barcode2.php';
			$gd = Image_Barcode2::draw($eoscord13, 'Ean13', 'jpeg', false, 70, 3, true);
			#保存先
			imagejpeg($gd, 'pic/gd.jpeg');	
			#画像消去
			imagedestroy($gd);
		?>
		<img src="pic/gd.jpeg">
	</div>
  </body>
</html>

これで完了になる。
実際に https://create.tmyinsight.net/barcode/index.phpをブラウザで確認する。
※CSS・scriptなどの設定がされていますが、その設定しなくても動きます。。。

大学の卒論でバーコードを利用したかったんだけど・・・思うように出来なくて断念しました。
大学卒業後、VPSサーバで試したところ直ぐに出来ました。
久々に共用サーバでチャレンジしてみようとおもってやってみたら、やっと出来ました。。。
10年掛かったw

【参考文献】
IT号外さん -PHPのバージョン7系、または8系でPEARライブラリー、パッケージを使う方法-

【商標情報】
PEAR さん -公式サイト-

【使用サービス情報】
star saver さん -公式サイト-