カテゴリー: PHP

  • 【.htaccess】PHPのエラー設定の覚書【ini_set】

    CORESERVERでのPHPのエラー設定の覚書です。

    レンタルサーバーであり、かつ、共用サーバーなので、php.iniの編集はできません。.htaccessファイルでの設定か、あるいは、ini_set()関数での設定になります。

    (もっとも、CORESERVERでは、自作のphp.iniを特定のディレクトリに置くことで使用できますが、その下のサブディレクトリにはphp.iniの効果が及ばないようです。)

    ■ まずは、.htaccessの設定から。

    ・エラー出力レベル設定(初期値6135)

    php_value error_reporting 6143
    php_value error_reporting 8191

    これは作用します。(phpinfo反映される)
    E_ALLは6134。すべてのエラーを出力(E_STRICT以外)。
    E_ALL | E_STRICT は8191 すべてのエラーを出力。

    ・エラー表示設定(初期値on)

    php_value display_errors off
    php_value display_errors on

    これは作用します。(phpinfo反映される)
    エラー表示のオン・オフを切り替えます。

    ・エラーログ記録設定(初期値off)

    php_value log_errors off
    php_value log_errors on

    これは作用します。(phpinfo反映される)
    エラーログ記録のオン・オフを切り替えます。

    ・エラー出力ファイル設定(初期値no value)

    php_value error_log 'php_error.log'

    任意のファイルを設定。
    これは作用しない。(phpinfo反映されない)
    エラーの出力ができない。原因不明。
    PHP_INI_ALLなので変更できるはずなのだが。

    ■ 次に、ini_set()関数での設定。

    上記.htaccessの設定を無効にして、今度は、実行時のファイルにini_set()関数で設定をしてみます。

    //エラーログ設定
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 'Off');
    ini_set('log_errors', 'On');
    ini_set('error_log','php_error.log');

    エラーログを取りたいのでログ関連をまとめて設定。エラーログの出力(取得)に成功。

    ini_setでエラーログを指定するとログを取得できるのだが、.htaccessでの指定だとログを取得できない。原因を特定できたら報告します。

    追記: 一応推測ですが、CORESERVERで、.htaccessでエラーログを記録できないのは、CGIモードで動かしている場合(php5.3)のようです。つまり、モジュールモードでapacheがphpを作動させる場合(php5.2)、.htaccessのphpの設定を読み取るのですが、cgiモードだと、それができずphpの設定を(一部)読み込まないようです。

    関連記事
    http://webmaster.chielog.com/php/123.html

  • 【書評】いきなりはじめるPHP

    いきなりはじめるPHP
     谷藤賢一(著)の書評です。

    良い点

    • 読者対象を超初心者に絞っている
    • 動くアプリを体感できる
    • とりあえず作ってみる方式
    • データベース・SQLまで扱っている

    悪い点

    • 文法の解説が少ない
    • おまじないで済ませる箇所がある

    総評

    プログラミング初心者向けの、かなりやさしい部類のPHP入門書です。全くの初心者向けといってよいレベルに仕上がってます。

    XAMPPの導入や簡単なHTMLの解説からはじまりPHPの基礎と、データベース(PDO)やSQLなどまでが扱われています。

    サンプルアプリとしては、簡易アンケートシステムを作ります。

    ただし、本の方針として、取り合えず作ってみる方式が採用されているので、文法の解説は、少なめです。配列やクッキー、セッションなどはほとんど扱われていません。

    これからプログラミングを始める人が、動くプログラムを体験することに主眼が置かれているので、文法やセキュリティについては、別に勉強する必要があります。

    難しい文法は嫌い、とにかくアプリ作りから始めたいという人には、適している本だといえます。

    ある程度、PHPの知識のある人だと、2時間ほどで読了できます。ちなみに、緑と黒の二色刷りです。

    いきなりはじめるPHP

  • 【書評】アフィリエイターのための Web APIプログラミング入門

    アフィリエイターのための Web APIプログラミング入門
     脇村隆(著)の書評です。

    良い点

    • 綺麗なパステル系フルカラーで見やすい
    • 見開き2ページで1項目完結
    • 実践的なAPIを学べる
    • XMLの取扱いに慣れられる

    悪い点

    • やや説明不足の点もあり
    • 後半は若干かけ足な説明

    総評

    API初心者にも、わかりやすく解説されており、なかなかの満足できる内容です。

    言語としてはPHPが採用されており、PHP自体の解説も軽くされています。ただ、PHPの解説としては薄いので各自でそれなりの学習は必要です。

    この本で扱われる主なAPIは、リンクシェア、楽天API、グーグルマップです。これらを組み合わせて、最終的には、マッシュアップサイト(トラベルサイト、ショッピングサイト)を作るレベルまで学習できます。この点は、とてもためになります。

    レベル的には、本の前半は、かなり簡単ですが、後半にかけて少しずつ難しくなってきます。本を読むだけでなく実際に手を動かしながら読み進めると理解が深まる内容です。

    最後には、APIを利用したサイトが紹介されているので、こちらも参考になりました。

    アフィリエイターのための Web APIプログラミング入門

  • 【書評】PHPレッスンブック

    PHPレッスンブック クジラ飛行机(著)の書評です。

    良い点

    • フルカラーで綺麗で見やすい
    • 環境構築・エディタに詳しい
    • 文章が読みやすい
    • ログイン機能(会員システム)の解説あり

    悪い点

    • 文法・セキュリティの解説が手薄
    • 本のみで完結しない(コードが抜粋の箇所あり)
    • 後の解説テーマが先に来ることあり

    総評

    文法重視ではなく、小さなプログラムのチュートリアル形式で解説が進みます。ですから、文法に飽きた人や、サンプルを動かしながら学びたい人に向いています。

    内容的には、前半は入門者向けに、文法に絡めて比較的やさしいサンプルが取り上げられています。

    ただ、後半のデータベースあたりから、オブジェクトの解説がないままPDOを扱ったりしており、若干難しく感じるかもしれません。

    最後のサンプルアプリ(TO DOアプリ)ですが、本にはサンプルコードが抜粋しかなく、ネットからダウンロードして見ないと理解しづらい仕様になっています。

    できれば、本一冊で完結して欲しいものですが、ダウンロード・印刷して本と照らし合わせて読んでみました。

    なかなか興味深いサンプルコードなので、ダウンロードして読まれることをお勧めします。

    総評としては、作者のあれもしたいこれもしたいという熱意は伝わってくるものの、本一冊にまとまりきらず、ページ数の都合か、解説も中途半端気味なところがあるのが残念な点です。

    ただ、会員システム・ログイン機能を扱う本としては良書だと思うので当該機能を学びたい人は読まれるとよいでしょう。

    ちなみに、本の公式サイトでは、第7章として、本で取り上げきれなかったトピックを扱っていますので、公式サイトも読まれることをお勧めします。

    PHPレッスンブック

  • 【PHP】広告をランダムに表示する方法

    ホームページやブログを作成しているなら、空いているスペースに広告を載せている人も多いと思います。

    通常、広告コードをそのまま貼り付けただけだと、ずっと同じ広告が表示されます。

    これをPHPを利用してランダムに表示するようにしてみます。
    いわゆるローテーション広告をPHPで実現するわけです。

    以下、PHPのサンプルです。
    例として、5個の広告コードをランダムに表示しています。

    <div align="center">
    <?php
    
    //広告コード5個を変数に代入
    $ad_1 = '広告コード1' ;
    $ad_2 = '広告コード2' ;
    $ad_3 = '広告コード3' ;
    $ad_4 = '広告コード4' ;
    $ad_5 = '広告コード5' ;
    
    //1から5の数字をランダムに作成
    $random_key = mt_rand(1,5);
    
    //スイッチ文で条件分岐
    switch ($random_key) {
    
        case 1:   
        echo $ad_1 ;
        break ;
    
        case 2:
        echo $ad_2 ;
        break ;
    
        case 3:
        echo $ad_3 ;
        break ;  
    
        case 4:
        echo $ad_4 ;
        break ;
    
        case 5:
        echo $ad_5 ;
        break ;
    }
    ?>
    </div> 

     やっていることは単純です。

    最初に、ランダム表示したい広告の数だけ変数を用意して、広告コードを文字列として代入します。広告コードをシングルクオートで囲むのがポイントです。

    次に、mt_rand関数で、ランダムになった数字を取得します。

    そうしたら、swich構文で場合分けして、ランダム取得した数字に当てはまる広告をechoで表示します。

    この方法ならテキスト広告でもイメージ広告でもランダムに表示できます。

    ちなみに、JavaScriptを使ってもランダム表示はできますが、ソースが丸見えになってしまいます。これに対して、PHPならばソースを露出することなく広告をランダム表示できるのでお勧めです。

    以上です。