4 プログラムを作る

Ⅰ Fedoraシステムの更新

  この章では、主にphpプログラムの例をとりあげていきますが、その前にfedoraのシステムのアップグレードの方法についてふれておきます。
  fedoraのシステムは、64ビット版の方は、バージョン32までいっていると思います。32ビット版のサイトでの配布はバージジョン25が最上位で、後のシステムのアップグレードは、デスクトップ画面でおこなうか、またはターミナルを開いておこなうかです。
  私自身のPCは、25から出発し、最初はデスクトップで27へ、次いでターミナルで29にアップグレードしています。
  いずれにしても、システムの更新は不安がともなうものです。実行にあたっては、設定ファイルやデータのバックアップをとった方がよいでしょう。
  なお以下の例は、バージョン27からバージョン29にアップした際のものです。

①最初の作業は、リモートからでも大丈夫です。

↓rootユーザーへのログイン
$ su  
パスワード:
#
↓ ふだんから小刻みしておかなければいけない作業らしい。相当時間がかかった
# dnf update  
↓パッケージのインストール
# dnf install dnf-plugin-system-upgrade  --best  

②ここからの操作は、rebootすなわち再起動があるのでインストーしたサーバーのPCで行った方がよいでしょう。

↓必要なパッケーのダウンロード
# dnf system-upgrade download --releasever=29  

# dnf system-upgrade reboot

③少し時間がたつと再起動された。ブートメニューは、まだ、真っ黒画面で一行表示でアップグレードされていることが確認できる。
それが終わると再起動が自動で行われます。

Ⅱ phpファイルのアップロード

(1)FFFTPでのファイルのアップロード

①FFFTPでは、ユーザーのホームディレクトリに、phpのファイルとデータをコピーできた。

②しかし、サーバーのApacheのドキュメントルート(/var/www/html)にコピーできなかった。
「553 Could not create file.」というエラーが出てしまった。ユーザーの書き込み権がないためらしい。

③そこでサーバーにログインして、フォルダーごと、ルートディレクトリにコピーした。
「cp -fr /home/ユーザー名/walkphoto /var/www/html」と入力します。

  この後、ダイレクトにドキュメントルートにアップロードできないものかと、いろいろ調べたり試みたりしたけれど結果はダメでした。
  結局は、ドキュメントルートにユーザーの書き込み権がないということがコピーできないということが大きな障害(?)になっているのです。
  少し強引かもしれませんが、ユーザーにapacheグループに所属させ、ドキュメントルートのパーミッションを775に変更して、所有者(apache)と同じ権利をグループ(apache)をもたせました。
(2)ユーザーをapacheグループにし、FFFTPでのファイルのアップロード

①一般ユーザーをapacheグループにする方法を調べる。

↓apacheのidを調べる
#id apache
	uid=48(apache) gid=48(apache) groups=48(apache)
↓次に一般ユーザーのidを調べる
 wheelはSUDOコマンドを使えるように「wheel」グループにも所属。
id eiiti
uid=1000(eiiti) gid=1000(eiiti) groups=1000(eiiti),10(wheel)
↓グループに所属させるコマンドgpasswdについて調べる
#gpasswd -help
	使い方: gpasswd [オプション] GROUP

	オプション:
	  -a, --add USER                USER を GROUP に追加する
	  -d, --delete USER             USER を GROUP から削除する
	  -h, --help                    このヘルプを表示して終了する
	  -Q, --root CHROOT_DIR         chroot するディレクトリ
	  -r, --delete-password         remove the GROUP's password
	  -R, --restrict                GROUP へのアクセスをメンバーのみに制限する
	  -M, --members USER,...        GROUP のメンバーのリストを設定する
	  -A, --administrators ADMIN,...
	                                GROUP の管理者のリストを設定する
	-A および -M オプションを除き、これらのオプションは同時に指定できません

②「gpasswd -a ユーザー名 apache」と入力。apacheグループに所属させる。

③「id ユーザー名」と入力。apacheグループにも属していることがわかる。

④「chmod -R 775 /var/www/html」と入力。パーミッションを変更。

⑤いったん「/var/www/html」内のwalkphotoディレクトリを削除

⑥ローカル側の「 walkphoto」ディレクトリを選択しアップロードボタンをクリックする。

⑦今度は無事アップロードできています。

Ⅲ  phpの特徴

  思わぬ所で時間をついやしてしまい、やっと本題にはいることができました。
  しかし、前ぶれが長くなったので、phpの特徴をここにあげるだけにとどめたいと思います。
  下のプログラムは、データベースwalkphotoのテーブルplacesのデータを一覧表示し、リンク先のphpファイルに値を渡すという単純な流れのphp ファイルです。
  赤色の部分がphpのプログラムにあたるので、ほとんどは、html(ハイパーテキスト・マークアップ・ランゲージと読むそうです)と言う部分でしめられています。
  ほかにウエブページの表現力を高めるためのCSS(カスケーディング・スタイル・シート)を読み込んでいます。
bk このプログラムでは出てきませんが、JAVAスクリプトという部品も必要な場合もあります。

	<html>
	<head>
	<META http-127.0.0.1="Content-Type" content="text/html; charset=UTF-8">
	<title>PygmyHomePage</title>
	<link href="css/jquery.bxslider.css" rel="stylesheet" />
	<link rel="stylesheet" type="text/css" href="matome_s.css" media="all">
	</head>
	<body text="black" background="../html/gazo/background1.gif">
	 <center><h2>フォト散歩</h2></center>
	  今日(11月26日)から散歩フォトを始めました。
	  <br>私は、毎日朝夕、犬の散歩をしていますが、デジカメをかかえて人間だけで散歩することを考えています。
	  <br>私の住んでいる所を起点にだいたい一時間程度で歩いて帰れる場所を選んで写真におさめようという訳です。
	  <br>ところで、埼玉県川越市の仙波町という所に私の家があります。この仙波町は、昔は、大仙波という大字に属していました。
	  <br>子供の頃の記憶では、大仙波というくくりの中で、私の家の住所は四けたの番地でした。
	  <br>下の画像をマウスでクリックするとスライドショーが始まります。
	<?php
	$db= new PDO("mysql:host=127.0.0.1;dbname=walkphoto;charset=utf8",'root','パスワード');
	function getSize($image){
		$msg="";
	  	$imagesize = getimagesize($image);
		if($imagesize){
			if($imagesize[0] >$imagesize[1]){
				$msg="横長";
		    }else{
		    	$msg="縦長";
		    }

		}else{
		    $msg= 'データ取得失敗';
		}
		return $msg;
	}
	$sql = null;
	$result = null;
	$sql="SELECT * FROM places";
	// クエリ実行
	$result = $db->query($sql);

	?>
	<table border="0">
	<tr>
	<?php 
	$n=0;
	while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
		$id= $row['id'];
		$image="./photoes/" . $row['yname'] . ".jpg";
	    $jname= $row['jname'];
	    if($n !=0 && $n%4==0){
	    	if(getSize($image)=="横長"){
	         ?>
	      		</tr><tr><td><a href="リンク先ファイル名?id=<?php echo $id ?>&jname=<?php echo $jname?>"><img src="<?php echo $image ?>" border="0" width="150"></a>  <br>
	      	<?php
	      	}else{
	      	?>
	      	    </tr><tr><td><a href="リンク先ファイル名?id=<?php echo $id ?>&jname=<?php echo $jname?>"><img src="<?php echo $image ?>" border="0" height="150"></a>  <br>
	      	<?php
	      	}	
	      	?>
     <?php echo $jname?>
     </td>     
    <?php
     }else{
		if(getSize($image)=="横長"){
         ?>
      		<td><a href="リンク先ファイル?id=<?php echo $id ?>&jname=<?php echo $jname?>"><img src="<?php echo $image ?>" border="0" width="150"></a>  <br>
      	<?php
      	}else{
      	?>
      	    <td><a href="リンク先ファイル?id=<?php echo $id ?>&jname=<?php echo $jname?>"><img src="<?php echo $image ?>" border="0" height="120"></a>  <br>
	      	<?php
	      	}
	      	?>
	       <?php echo $jname?>
	     </td>
	   <?php
	   }
	   $n++;
	 }      
	 $db=null;
	 ?>
	 </tr>
	</table>
	<center>
	<a href="https://ホスト名">HOME</a>
	</center>
	</body>
	</html>
  とにかくいろいろな要素でプログラムができあがっていることがおわかりになられたと思います。
  htmlの部分は、ある程度きまりきった書き方でなれるしかないとおもいます。
  次の章では、MariaDBとの関連で、phpの書き方についてふれていきます。