phpで自分のURLを取得する

phpで自分のURLを取得する方法がよくわからなかったので殴り書きメモ。

まず自分のphpのどこかに書いておく方法がある。しかしこれだとサーバー引越しとかしたとき直さないといけなくなるのでここでは無視。

基本に返ってブラウザがどうやってアクセスするかを確認。ブラウザがhttp://www.example.com/ddd/fff.phpにアクセスしたとき送られるHTTPヘッダはたとえば以下のようになる。

GET /ddd/fff.php HTTP/1.0
Accept: */*
Connection: close
Host: www.example.com

ここから$_SERVERなどの変数にいろいろ入ってくると思われるがどれがどれだかよくわからないが、たぶん以下のような感じだろう。上との対象で書くと。

$_SERVER['REQUEST_METHOD'] $_SERVER['REQUEST_URI'] $_SERVER['SERVER_PROTOCOL']
Accept: $_SERVER['HTTP_ACCEPT']
Connection: $_SERVER['HTTP_CONNECTION']
Host: $_SERVER['HTTP_HOST']

よって単純に考えれば以下のような感じでURLを取得できるか?

ポートが80じゃない場合はどうなるだろうか。その場合もHttpのHostヘッダに”Host: www.example.com:8080″見たいに入るから大丈夫か?

プロキシ経由の場合はサーバはプロキシからアクセスされるだけで、上に書いたことに大きな違いはないか?

IPアドレスでアクセスした場合は、HOSTがIPアドレスに変わるだけで大きな違いはないと思うが、この場合でもFDQNで取得したい場合はあらかじめどっかにかいとくしかないか?逆引きしてまですることじゃないと思う。

ではサイトのトップページを取得したい場合はどうするか?サイトのトップページがhttp://www.example.com/ddd/だとして、http://www.example.com/ddd/xxx/ppp.phpのアクセスから、トップページを取得したい場合。これはめんどくさそう。考えたくない。

いやその前にmod_rewriteを使っていて、QUERY_STRINGをディレクトリみたいに見せていた場合、$_SERVERの格変数にはどう格納されるのか?これもめんどくさい。調べるのもめんどくさい。

やっぱり素直にPHPに書いておいたほうが安全かな。

追記
pukiwikiの見ていたら関数を見つけたので適当に直してコピペ

ライセンスはpukiwikiに従う。

Linuxでbinやnrgやmdfイメージをマウントする。

fuseisoコマンドを使ってisoファイルやbinファイルなどのイメージをマウントすることができる。fuseisoはFUSEを使っているためユーザー空間でこれらの作業を行える。以下はUbuntu 8.04で行った例。

・インストール
$ sudo apt-get install fuseiso

・マウントする
$ mkdir ~/mnt
$ fuseiso file.iso mnt

・アンマウントする
$ fusermount -u ~/mnt

・GUIツール
Furius ISO Mount Toolを使えば、GUIから操作できる。

ubuntuでgufwを使ってufwを制御

gufwはufwのGUIフロントエンド。ufwはiptablesのフロントエンド。gufwはここからダウンロードできる。ここではgufw_0.0.7c-all.debを使った。

インストール後[アプリケーション]→[インターネット]→[Gufw Firewall Configuration]から実行できる。

右側の[Firewall enabled]チェックボックスで有効/無効を設定する。

次にデフォルトのポリシーを決める。デフォルトポリシーとはデフォルトで許可するか拒否するかの設定のことで普通は拒否にする。[Deny incoming traffic]をチェックすることでデフォルトで拒否になる。[Hide IP]をチェックするとpingに応答しなくなる。

次に許可するプロトコルやポートを決める。普通は[Preconfigured]タブから許可するプロトコルを選ぶ。

sshとhttpを許可する場合は以下のようになる。

設定は即座に反映される。ほんとに反映されてるか詳しく見たい場合はコマンドラインから以下のようにして確認する。

$ sudo ufw status
$ sudo iptables -L -v

ubuntu8.04でflashを再生する

以下のコマンドを実行する。

$ sudo apt-get install flashplugin-nonfree libflashsupport

flashplugin-nonfreeはflashプラグイン本体。libflashsupportはpulseaudioを利用するためのもの。
firefoxでflashを再生できることを確認。

ubuntuでpytubeを使ってYoutubeの動画をダウンロードする

pytubeはyoutubeから動画をダウンロードしたり、動画を変換したり結合したりサイズの変換をしたりするツール。

インストールするためにはMedibuntuリポジトリを追加しておかないとならないここを参考に、以下のようにして追加する。(hardyの場合)

$ sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list
$ sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update

http://getdeb.net/app/PyTubeからdebファイルをダウンロードして実行するとインストールできる。

インストール後アプリケーションサウンドとビデオからpytubeを選んで実行する。


ls コマンド で並び替え

lsは通常はアルファベット順にソートされる。

ファイルの変更日時順にソートしたい場合は、-ltオプションを使う 。

$ls -lt

ファイルのサイズ順にソートしたい場合は、-lSオプションを使う。

$ls -lS

並び順を逆にしたい場合は-rオプションを加える。

$ ls -lt -r
$ ls -lS -r

phpMyAdminを使ってMySQLにユーザを追加する

phpMyAdminを使ってMySQLのユーザを追加できる。

phpMyAdminを開き、[特権]をクリックする。

[新しいユーザを追加する]をクリックし、ユーザ名などを入力し、実行するをクリックする。

ユーザを追加したら、コマンドラインからmysqlコマンドで以下のようにして、ログインできるかまたはデータベースが操作できるか(できないか)確認する。

$ mysql -u user -p

ユーザの権限の編集は、特権ページから、ユーザのエントリの一番右の[特権を編集]をクリックし、希望の動作を行う。通常1つのデータベースに対して、特権を与える。それを行うには[データベースに固有の特権]からデータベースを選択すればいい。

assocコマンドとftypeコマンド

これらのコマンドはWindowsの関連付けを表示したり変更するコマンド。拡張子txtに関連付けられているアプリケーションを調べるには以下のように実行する。

拡張子txtにはnotepad.exeが関連付けられていることがわかる。%1は開かれるファイルに置き換えられる。

Windowsにrubyスクリプトのファイル.rbを関連付けるには以下のようにする。

まず、拡張子rbにファイルタイプを関連付ける。

次に、ファイルタイプに対してruby.exeを関連付ける。

%*は残りのすべてのパラメータに置き換わります。

環境変数PATHEXEに.rbを追加すれば、拡張子を省略して起動できます。ここでは省略。