PHPのサンプルプログラムを作成しまして、バリデーターのHTML_QuickForm2を使ったのですが、バリデート後の値を取得するメソッド
$form->getValue()
で得られる連想配列が空っぽで値がありません。 ($formがHTML_QuickForm2のインスタンスとして)
$_POSTには値があるのにgetValue()では取得できない。3時間ぐらい調査して原因は1行の書き忘れだった。
PHPのサンプルプログラムを作成しまして、バリデーターのHTML_QuickForm2を使ったのですが、バリデート後の値を取得するメソッド
$form->getValue()
で得られる連想配列が空っぽで値がありません。 ($formがHTML_QuickForm2のインスタンスとして)
$_POSTには値があるのにgetValue()では取得できない。3時間ぐらい調査して原因は1行の書き忘れだった。
以前Ryosuke Iwanagaさんの記事
https://blog.riywo.com/2012/04/01/023321/
を読んで根本的な関数などをまるっと置き換えられる便利な環境変数があるんだなーという印象を持ち、どこかで検証のために使ってみたいと思っていましたが、自動的に使うことになってしまいました。
ARMコアのLinuxでtensorflowを使おうとしましたが、色々バージョンがあわずglibcを最新に更新する必要がありそうで、試したところOSがぶっこわれました。
ちゃんとコンパイルするglibcを選んできた気がしたのですが、互換性のないglibcが入ってしまったようで基本のlsコマンドすら打てない状態。
何もできないし、ログアウトしたらもう2度とログインできない状態になりましたが、
export LD_PRELOAD="/lib64/libc-2.17.so"
と元のバージョンを指定するとlsコマンドなど普通のコマンドが復活しました。
なるほど「LD_PRELOAD」を使えるとOSが持っているライブラリをパスして自分が用意したライブラリを使うことができるのだと。
残念ながらシステム復元はできませんでした。システム領域のシンボリックリンク書き換えのためにsudoするとLD_PRELOADが無効になり、スーパーユーザーになれません。
普段sudoしか使わないので、パスワードは設定しておらずsuもできず。最初からスーパーユーザーで作業しておれば復元可能でした。
システムは復元できませんでしたが、LD_PRELOADの働きについては身に染みて理解しました。 既存のコマンドたちにも影響を与えるのでセキュリティ的にも際どい気がします。
あとglibcの手動置き換えは結構やばい作業だと感じました。まぁオペレーションが悪かっただけでしょうが、今回のような実験用環境でなかったら冷や汗ものです。