error_logに配列を出力する
Ajax通信やスマホアプリのAPIをPHPで作る場合など、
画面にデバッグ情報を出せない場合があります。
そういう時は、Apacheのerror_logにデバッグ情報を出力するのが手っ取り場合です。
test.php
<?php $weight = 100; error_log($weight);
error_log
100
この流れで配列を出力してみます。
test.php
<?php $myself = array( 'height' => 175, 'weight' => 100, 'salary' => 120000, ); error_log($myself);
error_log
PHP Warning: error_log() expects parameter 1 to be string
怒られました。こんな時は配列にprint_rをかましてさらに第二引数にtrueです。
test.php
<?php $myself = array( 'height' => 175, 'weight' => 100, 'salary' => 120000, ); error_log(print_r($myself, true));
error_log
Array\n(\n [height] => 175\n [weight] => 100\n [salary] => 120000\n)\n
これでOKです。
テキストエディタで改行コードを置換するとさらに見やすくなります。
Array ( [height] => 175 [weight] => 100 [salary] => 120000 )
MySQLのデータをn日分バックアップするシェルスクリプト
Cronで1日1回実行すればOK
#!/bin/sh # バックアップファイルを何日分残しておくか PERIOD=7 # バックアップファイルを保存するディレクトリ DIRPATH='/path/to/dir/mysql' # ファイル名定義 FILENAME="mysqldump"`date +%Y%m%d` # mysqldump実行 mysqldump --opt -Q -c --host=host -u username -ppassword database > $DIRPATH/$FILENAME.sql # パーミッション変更 chmod 700 $DIRPATH/$FILENAME.sql # 古いバックアップファイルを削除 OLDFILE=`date --date "$PERIOD days ago" +%y%m%d` rm -f $DIRPATH/$OLDFILE.sql
SSH接続したサーバーの待受中ポートを調べる
$ netstat -tlpn Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 PID/Program name tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
※IPアドレス:ポート
PHPインストールしている拡張モジュールの一覧
$ php -m [PHP Modules] apcu bcmath calendar Core ctype curl date dom exif FFI fileinfo filter ftp gd gettext hash iconv imap json libxml mbstring mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session shmop SimpleXML sockets sodium SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl Zend OPcache zip zlib [Zend Modules] Zend OPcache
SPFレコードとは?
送信ドメイン認証(SPF)について
これをしないと迷惑メールで弾かれることが多い。
SPFレコードが設定されているかどうかを調べる
$ dig example.jp txt ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> example.jp txt ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4177 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;example.jp. IN TXT ;; ANSWER SECTION: example.jp. 600 IN TXT "v=spf1 +ip4:219.106.254.128/28 ~all" ;; Query time: 47 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Tue Jul 24 10:57:11 2012 ;; MSG SIZE rcvd: 78
引けている
SPFを有効にするにはDNS設定(お名前.comとか)でTXTレコードを追加する。
example.jp TXT "v=spf1 +ip4:182.48.38.83 ~all"
example.jpは182.48.38.83からのメールしか送信しませんよー!という宣言
Awstats導入方法
■ソースダウンロード
# cd /usr/local/src # wget http://www.bflets.dyndns.org/AWStats66_Jpn.tar.gz # cp -r AWStats66_Jpn /var/www/sites/example.jp
■Jcode.pmダウンロード(検索エンジン経由アクセスの検索キーワードのデコードで必要)
# wget http://openlab.jp/Jcode/Jcode-2.07.tar.gz # tar xvzf Jcode-2.07.tar.gz # cp Jcode-2.07/Jcode.pm /var/www/sites/example.jp/AWStats66_Jpn/wwwroot/cgi-bin
■設定ファイル作成
# cd /var/www/sites/example.jp/AWStats66_Jpn/wwwroot/cgin-bin # cp awstats.model_jp.conf awstats.example.jp.conf # vi awstats.example.jp.conf
LogFile="/usr/local/apache2/logs/access_log" SiteDomain="example.jp" DirData="./awstats_db" DirIcons="/AWStats66_Jpn/wwwroot/icon" DirCgi="/AWStats66_Jpn/wwwroot/cgi-bin"
■結果保存ディレクトリ作成
# mkdir -m 777 awstats_db
■各perl(awredir.pl、awstats.pl、utf8_decode.pl)の先頭行にあるperlへのパスを適宜書き換え
#!/usr/local/bin/perl
■ドキュメントルートにリンク作成
# cd /www/htdocs # ln -s /var/www/sites/example.jp/AWStats66_Jpn AWStats66_Jpn
■apache設定ファイル変更
# cd /usr/local/apache2/conf/ # vi httpd.conf
AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi .pl
▼ログフォーマット変更
#CustomLog "logs/access_log" common CustomLog "logs/access_log" combined ↓ CustomLog "logs/access_log" common #CustomLog "logs/access_log" combined
■apache再起動
# service httpd restart
■cronにawstats更新コマンドを登録
#awstats 0 * * * * cd /www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin; /var/www/sites/example.jp/AWStats66_Jpn/wwwroot/cgi-bin/awstats.pl -config=example.jp -update
■アクセスして確認
http://example.jp/AWStats66_Jpn/wwwroot/cgi-bin/awstats.pl?config=example.jp
※ちなみに下記コマンドで結果の静的htmlが作成できる(アイコンとかでないけど)
cd /www/htdocs/AWStats66_Jpn/wwwroot/cgi-bin; \ /var/www/sites/example.jp/AWStats66_Jpn/wwwroot/cgi-bin/awstats.pl -config=example.jp -output -staticlink > /tmp/awstats.html