2009-01-22 (木)カテゴリPHP, 制作タグPHP, セーフモード
PHPのセーフモードだとpopenによるメール送信って動作しません。
動作実証済み。※正確には「safe_mode_exec_dir の中でのみ実行可能」らしい。
あとは、mb_send_mail関数使っている人は、第5引数が使えないらしいです。第4引数までは大丈夫らしい。
mail関数も同様です。
セーフモードにより制限を受けるか無効となる関数
いろいろネット中検索したけど、情報がなかった。。;
ちなみにセーフモードを調べる方法は
PHP
if(get_cfg_var("safe_mode")){
//セーフモードのときの処理
} else {
//セーフモードではないときの処理
}
これでオッケーです。もし他のサーバで動く関数が動かない!など問題がある場合は
セーフモードを疑ってみましょう。
2008-12-20 (土)カテゴリPHP, 制作タグextract, PHP
意外と使いそうで、使わない関数なんだけども
配列使う上では便利な関数。自分メモの意味も込めて。
配列に付けたキーをそのまま変数として使うことが出来ます。
PHP
$apple = "青森りんご";
$arr = array(
"apple" => "りんご",
"orange" => "オレンジ",
"melon" => "メロン",
);
extract($arr, EXTR_PREFIX_SAME, "pre");
echo $apple.$orange.$melon.$pre_apple;
上記を実行結果は。
青森りんごオレンジメロンりんご
もしも変数が被ったら上記の場合は、「pre_」が付いて変数となります。
「EXTR_PREFIX_SAME」部分は他にも色々あります。
個人的には「EXTR_PREFIX_ALL」がおすすめ。わりかしコードの統一ルール作りやすいですしね。
以下、PHPプロ引用
EXTR_OVERWRITE
同じ名前の変数があった場合、存在する変数が上書きされます。
EXTR_SKIP
同じ名前の変数があった場合、存在する変数は上書きされません。
EXTR_PREFIX_SAME
同じ名前の変数があった場合、prefix を前につけた新しい変数となります。
EXTR_PREFIX_ALL
全ての変数の前に prefix を付けます。PHP 4.0.5 以降、接頭辞を数値とすることも可能です。
EXTR_PREFIX_INVALID
無効または数値の変数名のみに接頭辞 prefix を付ける。このフラグは、PHP 4.0.5 で追加されました。
EXTR_IF_EXISTS
カレントのシンボルテーブルに既に存在する場合にのみ上書きします。
例えば $_REQUEST 以外にあなたが定義した変数のみを展開し 有効な変数としたいような場合に有用です。このフラグは PHP 4.2.0 で追加されました。
EXTR_PREFIX_IF_EXISTS
同じ変数だが接頭辞をつけていないバージョンの変数が カレントのシンボルテーブルに存在する場合にのみ変数を生成します。このフラグは PHP 4.2.0 で追加されました。
EXTR_REFS
変数を参照として展開します。 これはインポート済みの変数が、 var_array パラメータの値に常に参照付けられることを意味します。このフラグを単独で使用するか、 あるいはextract_type と和算することにより、 他のフラグとそれを組み合わせることができます。
このフラグは PHP 4.3.0 で追加されました。
といった具合です。
関数は便利ですが、上記のような作りはforeach使えば全然出来るわけです。
そちらでも書ける事が応用効くし、重要かな。。と思います。
2008-01-17 (木)カテゴリPHPタグOLE, PHP, プロパティ, 動画
3D関係の仕事をしている友人から
社内素材管理システムの構築を現在頼まれていて、仕様決めている所なのですが。
彼らは動画ファイルを扱う事が多く、サムネイルの一覧が並ぶのではなく
動画の一覧が並ばないといけないらしい(もちろん全部再生)
現在、彼らはHTMLを作って対応しているとの事。
確かに、システムで自動化したら何て素敵なんだろうと思いますが、
問題として、その素材達を登録するには一つ一つ、検索用のキーワードを
入れていくのか?という事があったりするのです。
それはあまりにも理に適っていないので、ファイルを調べていくと
プロパティに値が入っている(素材屋さんが入れてるのかな?)
その値を抽出すれば…ってPHPとかでファイル情報って取得できるの??
調べてみました。。
Perlでのプロパティの取得
どうやらPerlだとOLE使って出来るみたい。PHPだとまったく出てこない。。orz
OLE系調べてみれば出るかな。解決方法求!