個人的なまとめ。

てきとーに何か書きます。

hetemlでPHP7.1とMySQL5.6の連携

ヘテムルの公式サイトに上がっている方法では,PHPMySQLの連携が出来なかった.
heteml.jp

公式サイトの方法では,PHPのバージョンが4または5の時のみ有効で,PHP7の場合では別の方法を使用する必要があります.

というか,mysql_connect(PHP: mysql_connect - Manual)自体があまり推奨じゃなくなってきているので,PHP5以上の場合は下記の方法に変更した方が無難です.




hetemlのソースコードをPHP7版に変更をすると,
mysqli_connect(PHP: mysqli_connect - Manual)の場合

    <?php  
      
    // MySQL に接続し、データベースを選択します。  
    $conn = mysqli_connect('HOSTNAME', 'USERNAME', 'PASSWORD');
      
    // SQL クエリを実行します。  
    $res = mysqli_query('SELECT * from table_heteml'); 
      
    // 結果を出力します。  
    while ($row = mysqli_fetch_array($res, MYSQL_NUM)) {  
        echo $row[0] . "\n";  
    }  
      
    // 結果セットを開放し、接続を閉じます。  
    mysqli_free_result($res);  
    mysqli_close($conn);  
      
    ?>  


PDO(PHP: MySQL (PDO) - Manual)の場合

    <?php  
      
    // MySQL に接続し、データベースを選択します。  
    $conn = new PDO('mysql:host=****.phy.heteml.lan;dbname=DBNAME;charser=utf8', "USERNAME", "PASSWORD");

    // SQL クエリを実行します。  
    $res = $db->query('SELECT * from table_heteml');
      
    // 結果を出力します。  
    while ($row = $res->fetch()) {  
        echo $row[0] . "\n";  
    }      
    ?>  

また,データベースに接続を行う時の各IDは,

host --> データベースのサーバー名 (mysql*.heteml.jp または mysql00*.phy.heteml.lan)
dbname --> データベース作成時のユーザ名 (hetemlの場合は最初にアンダーバーが入る)
USERNAME --> dbnameと同じ
PASSWORD --> データベースへログインする時のパスワード (hetemlにログインする時とは別)


また,hetemlの場合,ログイン後トップページ右側にある「PHP設定」を変更します.
f:id:kosuke128:20180110154119p:plain
PHP7.1にもモジュール版とCGI版がありますが,php.iniを変更できるのはCGI版なので,CGI版に変更します.

下記に自分の設定を表示しておきます.
f:id:kosuke128:20180110154108p:plain
f:id:kosuke128:20180110154042p:plain
f:id:kosuke128:20180110154054p:plain
f:id:kosuke128:20180110154049p:plain


そのほかの設定にある,「display_erros」は「Off」にしておくと,PHPでのエラーが発生した場合に画面に表示されなくなります.本番環境ではOffにしておく事をオススメします.
画面に表示しない代わりにログを出しておきたいので,「log_errors」は「On」に,「error_reporting」は「E_ALL & ~E_NOTICE」を選択しておくと良いです.