スキップしてメイン コンテンツに移動

投稿

2015の投稿を表示しています

.htaccess の RewriteRule で 正規表現パターンを 「 ^/ 」 から書くな

RewriteEngine On RewriteRule ^/foo/bar\.html$ baz.html [L] って感じで、正規表現パターンを「^/」から始めている記述がネットに散乱してるけど、 RewriteRule に渡ってくるパスが「/」から始まるのは、RewriteRule を httpd.conf に書いたときだけ。 .htaccess に書いたときは、.htaccess が設置されているディレクトリからの相対パス。 よって、.htaccess で 「^/」って書くと、パターンにマッチしない。

やっぱりおかしい

愚痴。 これの意味わかるひと~ define('DATA_REGIST', 0); define('DATA_NOTREGIST', -1); define('DATA_VISIBLE', 0); define('DATA_UNVISIBLE', -1); なんだろう、このもやもや感。 自称スーパーなPGが書いたPHPのソースに書いてあった。 >> 2024.11. そいつはもういないらしい。 辞める数年前には、俺はそいつを嫌いになっていた。

php で include/require しているファイルの一覧を find と grep で作成する

include (require) で読み込んでいるファイルの一覧がほしかったので、find & grep で作ってみた。 例:common/html というディレクトリに共通ファイル(ヘッダやフッタ)がある場合 # cd /var/www/html # find . -type f -name "*.php" | xargs grep -E "common/html"

RewriteRule の サンプル

Apache HTTP Server Version 2.2 ドキュメント mod_rewrite - RewriteRule ディレクティブ から引用 Inside per-server configuration (httpd.conf) for request GET /somepath/pathinfo: Given Rule Resulting Substitution ---------------------------------------------- ---------------------------------- ^/somepath(.*) otherpath$1 invalid, not supported ^/somepath(.*) otherpath$1 [R] invalid, not supported ^/somepath(.*) otherpath$1 [P] invalid, not supported ---------------------------------------------- ---------------------------------- ^/somepath(.*) /otherpath$1 /otherpath/pathinfo ^/somepath(.*) /otherpath$1 [R] http://thishost/otherpath/pathinfo via external redirection ^/somepath(.*) /otherpath$1 [P] doesn't make sense, not supported ---------------------------------------------- ---------------------------...

[postfix] 特定のアドレスから送信されたメールのうち拒否られた送信先のログを抽出する

メール配信システムなんかを組んで、一括送信した後に、宛先不明などで拒否られたログを抽出する方法。 1.メールログから送信元で抜いて、そこからキューIDだけ取り出してファイルに保存する # grep -E "from= " /var/log/maillog | grep -o -E "[0-9A-Z]{10}" > ~/hoge.txt 2.キューIDをファイルから読み込んで検索し、相手メールサーバの応答コードが5XXのログを抜く。 # grep -f ~/hoge.txt /var/log/maillog | grep "said: 5" > ~/hoge_5XX.log

カレントディレクトリ以下のファイル、ディレクトリに対して移動・削除・chownする

■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てのオーナーとグループを変更する chown -R hoge:hoge ./ ※ ./* としたいところだが、* を付けると隠しファイルが変更対象にならない。 ■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを移動する mv * .[^\.]* 移動先ディレクトリ ■カレントディレクトリ以下のファイル、サブディレクトリ、隠しファイル全てを削除する rm -r * .[^\.]* ※ 確認メッセージが鬱陶しかったら、-rf とする。

CentOS + Apache + PHP + PDO で SQL Server へ接続

前提:httpd、phpのインストールが終わっていること # yum install httpd php 作業: # yum install epel-release # vi /etc/yum.repos.d/epel.repo [epel] ~ enabled=0 ~ # yum --enablerepo=epel install php-mssql # vi /etc/freetds.conf ~ [MSSQLSVR2012]         host = 1.2.3.4         port = 1433         tds version = 8.0         charset = CP932         client charset = UTF-8 # vi /etc/selinux/config ~ SELINUX=disabled ~ # restart

Google アナリティクスコード の設置場所

この形式の設置場所は、</body> の直前 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-12345678-1"); pageTracker._trackPageview(); } catch(err) {} </script> この形式の設置場所は、</head> の直前 <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-12345678-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.a...

pontaカード再発行

このサイトの趣旨とは違うが・・・ pontaカードって、裏にビニール(?)が貼ってあるだけで、 かつ、そのビニールにバーコードが印刷してあるから、 ビニールはがれてきたら、テープでとめないとどうしようもなくなる。 で、しばらくテープでとめて使ってたんだけど、 いい加減ボロボロになってきたので 再発行手続きをした。 カードの裏面にかいてある電話番号に電話して 音声ガイダンスに従って・・・ 最後に新しい会員IDがガイダンスで流れるんだけど、 なんせ、車の中から携帯でかけたから 控えるものがない。 まぁいいかと電話を切った。 翌日、ローソンでタバコとコーヒーを買って(毎朝の日課)、 いつものようにpontaカードを提示したら 「ピー」 って。 ほぼ毎日行くローソンだから 店員さんと仲良し状態なので 店員:「?」 オレ:「あ、再発行手続き中」 店員:「使えないのかな・・・ちょっと待ってね」 と言って、裏に書いてある会員IDを手打ちし始めた。 「ピー」 店員:「やっぱり、使えないですね。」 オレ:「え?このカード、もう使えなくなるの?」 店員:「そうみたいですね。」 オレ:「うわ、ポイント入らないの?」 朝なのでこれ以上時間がなかったので車に。 で、運転しながら気が付いた。 新しい会員ID控えておけば、 会員ID手打ちでポイント入るっぽいって・・・ だから、会員ID控えなかったら、再発行後のカードが届く10日~2週間は、ポイント貯まらない。 再発行手続きの音声ガイダンスでは、そんな案内なかったし・・・ pontaって、運営くそだね。

wget で負荷テスト

ab だと 同じファイルにしかアクセスできないので、wget 使って負荷テストしてみた。 BASIC認証ありのテストサイトに負荷テストしてみた例。 $ wget -o /var/tmp/wget.log -r -np --spider -t 1 -e robots=off --http-user=hogehoge --http-passwd=hogehoge http://www.example.dom/ ログを書き出す -o /var/tmp/wget.log サイト全体 -r 親階層は見ない -np ファイルの存在確認のみ(ダウンロードしない) --spider 試行回数は1回だけ -t 1 robots.txtを無視 -e robots=off BASIC認証アカウント --http-user=hogehoge --http-passwd=hogehoge テストサイトURL http://www.example.dom/

glibcを使っているプロセスを一覧にするコマンド

glibcを使っているプロセスを一覧にするコマンド # lsof | grep libc | awk '{print $1}' | sort | uniq sudoが必要な環境で実行するなら # sudo lsof | grep libc | awk '{print $1}' | sort | uniq 引用元: glibcで見つかった致命的な脆弱性「GHOST」は具体的になにが問題なのか

PHP のメール送信フォームなどで iCloud 宛のメールが届かない場合

# vi /etc/php.ini mail.add_x_header = off これで届くようになる。 ただ、spamフィルタリングされているようで、他の原因で届かない(アカウントのメールボックスに配信される前にフィルタされ、引っかかると届けないようなので、迷惑メールフォルダにすら振り分けられない)こともあるので、その時は、これ以外の要因も探る。

apt-get で 保留パッケージをインストールする

久しぶりに Ubuntu を触った。 ここ何年も CentOS ばかり触ってたので、コマンド忘れてる。 $ sudo apt-get update $ sudo apt-get upgrade ってやって更新パッケージインストールしたら、インストールが保留されたパッケージがあった。 で、どうやってインストールするんだっけ?と小一時間。 $ sudo apt-get dist-upgrade でインストールできた。 そのパッケージを更新すると、他のパッケージが削除される時に保留になるみたい。 -s 付けると、どのパッケージが削除されるか確認できる。 $ sudo apt-get -s dist-upgrade

/var/tmp に吐いていたログが消えた

cronの実行結果を /var/tmp に吐いていた。 /var/tmp は「再起動しても削除されない」と何かで見た記憶があったので放置しておいた。 で、久しぶりにログを見てみようとしたら・・・ 30日より前のログがない。 で、調べてみたら ここ http://qiita.com/kuni-nakaji/items/f29be14be578b5a19d4b に詳しく書いてあった。 どうも、/etc/cron.daily で tmpwatch というやつが 30days より前のファイルを消しているらしい。