カテゴリー
Linux

php 5.5 へアップデートして APC から APCu と OPcache へ切り替えました♪

PHP 5.5 にそろそろアップデートしたいです!そしてアップデートしますと、キャッシュすることでパフォーマンス向上に貢献してくださった APC が使えなくなってしまうとのこと。代わりに、APCu と OPcache が使えるとのことで、インストールいたしました。

  • Zend OPcache はオペコードキャッシュ(コンパイル後のコードをメモリに保存して再利用)
  • APCu はユーザーキャッシュ(オブジェクトや変数をメモリに保存して、別のリクエストからそれを再利用)
  • APC はオペコードキャッシュ + ユーザーキャッシュ

今回はその記録をノートいたします。

作業前の状態

  • PHP 5.4.33
  • pecl/APC 3.1.15dev
  • Remi リポジトリ導入済み
  • Apache ではなく、nginx
  • PHP は php-fpm

1.PHP 5.5 をインストールできるかどうか、Remi リポジトリの設定を確認

カテゴリー
Linux

yum update で WordPress へのアクセスできない! /etc/httpd/conf.d/proxy_ajp.conf 除外で解決♪

ポイント

  • yum –enablerepo=epel,remi,rpmforge update で /etc/httpd/conf.d/proxy_ajp.conf が作られた。
  • このファイルで指定しいるLoadModule proxy_ajp_module modules/mod_proxy_ajp.so が実行できない、つまりモジュールが読み込めないためエラーとなった。
  • /etc/httpd/conf.d/proxy_ajp.conf をリネームして設定にとして読み込まれないようにし、httpd を起動できるようにして解決した
カテゴリー
コンピューター

Cookie を削除してからセキュア属性を確認しなさいな!★慌てるな★

ポイント

  • Cookies はウェブブラウザに一定期間保存される。
  • php.ini で session.cookie_secure = 1 と設定してを再起動するとウェブサーバに反映される。
  • よって、サーバのクッキー設定をウェブブラウザから確認するためには Cookie をまず削除することが肝心

大変初歩的なことでございますの!どうして気が付かなかったのかしら><。

カテゴリー
Linux

phpPgAdmin を yum を使ったときと同じようにインストールするためのポイント♪

ソースからインストールするときでも yum でインストールしたときと同様の構成にするためのポイント

  • ソースファイルは /usr/share/phpPgAdmin に置く。
  • Apache の設定ファイルは /etc/httpd/conf.d/phpPgAdmin.conf とする。
  • もちろん phpPgAdmin の設定ファイル /usr/share/phpPgAdmin/conf/config.inc.php も適当に修正する。

以上の2点です。

Apache 設定ファイルの内容

カテゴリー
コンピューター

【PHP】2次元配列において、2次元目の配列に共通する value を取得します♪

スクリーンショット 2013-08-21 22.03.25.png

たとえばいろんな本があって、それぞれの本にジャンルや特長などのタグがついています。共通するタグを手に入れるには、どのようにプログラムすればよいでしょうか?

本は配列のキーになっていて、タグは値です。本にタグはたくさん付けられますので、値といっても配列となっています。このようなデータを想定しましょう。

  • 本A – タグ1、タグ2、タグ3
  • 本B – タグ1、タグ3、タグ4
  • 本C – タグ2、タグ3、タグ4

この場合、タグ3が全ての本につけられています。タグ1、タグ2、タグ4は惜しいことに3冊のうち2冊にしかタグ付けされていないので、該当しません。

人間の目で見れば、この程度すぐに抽出できますわね♪では、プログラムで自動的には?。。。難しいです><。でもできましたので、ノートいたします♪

使う関数!

考え方のポイント

  • 共通するデータで基準の変数を上書き

2次元目の配列をどれか適当に選択しまして、これを基準の変数としております。これとその他の2次元目の配列を比較しまして、共通項を取得します。

そして次の2次元目の配列と比較しまして、、、と繰り返していくことで全ての2次元目の配列に共通する値を抽出することができます♪

カテゴリー
コンピューター

PHP 開発時にデバッグするのにいつも使う関数♪

error_log(print_r('zzz', true)); // TODO
  • PHP: error_log – Manual
  • PHP のエラーログの出力先を Apache と分離していなければやめたほうがよいかも。分離していれば、たとえば tail -f /var/log/php_errors.log などとしてリアルタイムにログ内容を見ることができる。
  • PHP: print_r – Manual
  • print_r の2つ目の引数に true を渡すことがポイント。指定しない(false)場合、表示しようとするため、ログの関数に渡されない。
  • 行末に TODO コメントを入れることで、開発終了時に発見しやすくします。
カテゴリー
コンピューター

「xdebug var_dump 省略」されてしまうのをされないように設定メモ♪

設定ファイルに追記する 3 つの設定

xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1

これで var_dump 関数の内容が省略されずにすべて表示されるようになりました。

カテゴリー
コンピューター

【PHP】strpos 関数を使って文字列検索♪【奥が深い】【ややこしい】

スクリーンショット 2013-07-22 22.59.17.png

ポイント

  • 【定義】strpos — 文字列内の部分文字列が最初に現れる場所を見つける
  • 【strpos 返り値】
    見つかった ⇒ int の数字
    見つからない ⇒ boolean の false
  • strpos が true を返すことは無い
  • ドキュメント → PHP: strpos – Manual

strpos を使って文字列検索ポイント♪

  • === false または !== false を使用すれば文字列が含まれているか知ることができる
  • == false または != false は使ってはいけない。1文字目から見つかるパターンでも、見つからない結果となってしまうため
  • true を使用しても全く意味ない
カテゴリー
コンピューター

動的に SQL の IN 句のバインドを生成する方法をメモ【PHP】

サンプルソース

<?php
// table の id に対して次の値が検索条件として渡されてくると仮定
$data = array(2, 7, 14, 23);

/*
 * 入力値の数だけ ,? を繰り返し、2文字目以降を取得することで動的に SQL の IN 句のバインドを生成
 *
 * 1.count(array(2, 7, 14, 23)) で渡されてきた入力パラメーターの数をかぞえる。結果は 4 となる。
 * 2.str_repeat(',?', 4) で ',?' を 4 回繰り返す。結果は ,?,?,?,? となる。
 * 3.substr(',?,?,?,?', 1) で ,?,?,?,? 文字列の 2 番目から最後までを返す。結果は ?,?,?,? となる。
 */
$sql = 'SELECT * FROM testtable WHERE id IN(' . substr(str_repeat(',?', count($data)), 1) . ')';

// SELECT * FROM testtable WHERE id IN(?,?,?,?) と表示されれば成功!
echo $sql;
?>

使っている関数へのリンクまとめ

カテゴリー
コンピューター

【Mac】Eclipse Classic 4.2.2 で PHP 開発をするためのプラグイン・設定!

スクリーンショット_2013-05-06_15.30.13.png

本投稿は、

  1. 【Mac】Eclipse Classic 4.2.2 をインストールしますメモ♪ | oki2a24
  2. 【Mac】Eclipse ワークスペースを CentOS 5.9 に設定する方法【VirtualBox】 | oki2a24
  3. 【エラー解決】Mac の Eclipse ワークスペースを VirtualBox に設定できない!【Workspace at ‘xxxxx’ in use or cannot be created, choose a different one.】 | oki2a24

の続きとなります。

つまり、PHP は VirtualBox の CentOS 5.9 の Apache 上で動いており、Mac から CentOS 5.9 の Samba を介して接続して、Mac Eclipse のワークスペースは CentOS 5.9 の /var/www/html/ としている状態です。また、CentOS 5.9 は IP アドレス 192.168.56.112 が設定されており、LAMP 環境が導入済みです。

今回は Mac の Eclipse Classic 4.2.2 で PHP 開発をするためにインストールするプラグイン・設定をメモしていきます。