新人PGの学び

プログラマーの卵のlog

Notice: Undefined variable:エラー

phpで頻繁に生じやすいエラー
※Noticeが発生するだけで処理速度が大幅に低下するので注意


下記の場合、$item_list が未定義のためエラーが生じる

Notice: Undefined variable: item_list in YYY.php on line 6

■エラー内容

 定義していない変数を使用した時に発生するエラー


■発生現象例

  1. foreach ($pass as $key =>$value){
  2.  $list = "user_id = $key
    ";
  3.  $list .= "
    ";
  4.  $list .= "";
  5.  $list .= "
    ";
  6.  $ltem_list .= $list;
  7. }
  8. print $item_list;



■対応

  • 一番最初に初期化する(ループ前に初期化)

    $item_list =null;


  1. $item_list =null;
  2. foreach ($pass as $key =>$value){
  3.  $list = "user_id = $key
    ";
  4.  $list .= "
    ";
  5.  $list .= "";
  6.  $list .= "
    ";
  7.  $ltem_list .= $list;
  8. }
  9. print $item_list;



RewriteRuleの条件を設定

.htaccess にてリダイレクトの設定

■内容

【www.XXX.info】ドメインか、【XXX.info】ドメインでアクセスした場合、
全て【http://XXX.info】に遷移する
※画像なども含めて表示

■修正箇所

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.XXX\.info)(:80)? [OR,NC]
RewriteCond %{HTTP_HOST} ^XXX\.info [NC]
RewriteCond %{REQUEST_URI} !(^/$)
RewriteCond %{REQUEST_URI} !(^/image/)
RewriteRule ^(.*) http://XXX.info [R=301,L]


※最終行は必ず改行

■修正の意味

#URLの書き換え開始
RewriteEngine on


#80ポートの指定有無関係なく転送元ドメイン、またはからアクセスがあった場合は、転送ドメインに遷移
RewriteCond %{HTTP_HOST} ^(www\.【転送元ドメイン】\.info)(:80)? [OR,NC]
RewriteCond %{HTTP_HOST} ^【転送元ドメイン】[NC]


#無限ループさせないように「トップページではない場合」


RewriteCond %{REQUEST_URI} !(^/$) 


#一部のディレクトリを許可したい場合
※「image」ディレクトリを許可する場合
RewriteCond %{REQUEST_URI} !(^/image/)
RewriteRule ^(.*) 【転送先ドメイン】 [R=301,L]


■その他詳細

・[NC]・・・RewriteCondの大文字小文字を関係なしを条件とするオプション
※([]で記載されるものは、全てオプション)


・[OR]・・・ いずれかのRewriteCondにあてはまる場合に適用
※[OR]を明示しない場合、自動でANDになる。
※[OR, NC]とスペースをするとエラーになるため不要


・「RewriteRule A B 」・・・ユーザーからリクエストのあったURLが「A」の場合、「B」のURLへリダイレクトされる


・^(.*)・・・”任意文字の連続” の正規表現


・[R=301,L]・・・301へリダイレクトした場合、それ以降処理なし
※[R]は、RedirectのRで、301を指定しない場合(「R」のみの場合)は、302リダイレクトになる


※[L]は、LastのLで、RewriteRuleの条件にマッチした場合、以降のRewriteRuleを処理しない


・%{HTTP_HOST}・・・ホストを限定してるのは、開発環境で無効化するため

参考になる面白いサイト(随時更新)

■バイオサイエンス
biopapyrus | いにしへになほ立ちかへる心かな恋ひしきことにもの忘れせで

bioinformatics | バイオインフォマティクス | 生物情報科学


■Linux



■Perl


ハッシュ | Perl,キーと値がセットに成って保存される

Zabbix編

■Zbbixでメモリ調査

最新データ>グループ:全て ホスト:全て
「Total memory」フィルター検索


■サーバのコア数

最新データ>名前:「CPU cores num」でフィルター検索

Linuxコマンドライン編

cat で閲覧 

cat /proc/version


cpu押した後

「1」押すとcpuのコア数が表示


よく使用するコマンドを随時更新


diff 

テキスト処理コマンド
diff -y --left-column


空白・改行を無視したい場合
diff -Bwy --left-column


差分のみ表示したい場合
diff -r . /var/modeduo/prod_beta/web/. | grep -E '^<' | perl -pe 's/^<\s//g'

dig:詳細な情報をDNSサーバから取得 

dig(Domain Information Groper)
#書き方
dig [@問い合わせ先DNSサーバ] [ホスト名/ドメイン名/IPアドレス] [クエリタイプ]

dig 195964.


du:ディレクトリ内のサイズ確認 

#ディレクトリ内の容量表示
du -h *


#容量逼迫内容の中身表示
#容量の多い階層化にもぐっていくと容量を逼迫した原因がわかる
du -sh ./*

find:全文検索 

カレントディレクトリ以下のすべてのファイルから指定のキーワードを検索するとき
find ./ -name '*' |xargs grep -n '検索文字列'
カレントディレクトリ以下のphpファイルから指定のキーワードを検索するとき
find ./ -name '*.php' |xargs grep -n '検索文字列'


find ./ | xargs grep -n 'XXXX.com'

free:メモリ確認 

free -m


//プロセス数確認

less /proc/cpuinfo | grep processor |wc


grep:検索 

#var/sitetopディレクトリ以下のhoge.cgiのファイル名を再帰的に検索
grep -rn 'hoge.cgi' /var/sitetop


ifconfig 

#現在動作中のネットワーク・インターフェースを参照する
/sbin/ifconfig


#IP参照例
/sbin/ifconfig eth0


gzip / bzip2

gzip / bzip2 ※圧縮元が消えてしまうのでtar使用をおすすめ


tarで圧縮 /解凍

tarで圧縮

tar zcvf maillog.gz maillog
tar zcvf 圧縮ファイル名
オプション 意味
z (--gzip) gzipで
c (--create) 作り出す
v (--verbose) 冗長に
f (--file) このファイルへ


tarで解凍

tar zcxvf 圧縮ファイル名
オプション 意味
z (--gzip) gzipで
x (--extract) 抽出する
v (--verbose) 冗長に
f (--file) このファイルを


ll:サイズ確認 

#昇順にサイズ表示(ディレクトリの場合、あまり信用ならない)
ll -Sh


#ここで確認出来る
du * -smh


nice:プロセスの優先度を変更 

サーバーシステムに影響を与えずに実行できるniceコマンド
例)優先度を低い場合
#「web_back20160114」のファイル名を除外して'.htaccess' か'*.conf'ファイル名から'IP'に該当する行を探す
nice -n 19 find /var/stage/web* -name '.htaccess' -o -name '*.conf' -o -type d -name web_back20160114 -prune|xargs grep -n 'IP'
niceコマンド


nfk:ファイル名の文字コード確認 

nkf
nkf --guess 【ファイル名】
nkf -g 【ファイル名】


ps:httpdプロセス数の確認

ps auwx | grep 'httpd' | wc -l


rpm:mysqlが存在するかの確認 

そもそもサーバーにmysql 存在するか確認
rpm -qa |grep mysql


#以下のように出力される可能性あり
mysql-5.0.77-4.el5_6.6
現在使用しているか確認
ps -auwx|grep mysql


#以下のように出力された場合、動いていない
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root 14807 0.0 0.0 65436 872 pts/2 S+ 19:24 0:00 grep mysql


ulimit:現在ログイン中のユーザの open files の値を確認 

ulimit -n