トップページphp
1001コメント286KB

【PHP】下らねぇ質問はID出して書き込みやがれ 109

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/07/28(木) 06:53:37.45ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 108
http://hibari.2ch.net/test/read.cgi/php/1309599473/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0261nobodyさん2011/08/06(土) 03:15:41.34ID:???
スレタイが読めませんか?
0262nobodyさん2011/08/06(土) 08:48:42.39ID:???
↑の書込みを見て欲しい。
なんとつまらない書込みだろうか。
義務教育を終えていない小学生であったとしても
多少のヒネリを加えて書き込む事は容易いはずである。
しかしこの書込み内容からはその形跡は微塵も感じられない。

彼の脳に重大な障害が発生している事は誰の目にも明らかだろう。
恐らく彼は経済的な事情で十分な治療を受ける事が困難な状況に陥っているに違いない。
この一見無意味としか思えない彼の書込みは、
現在の医療システムの見直しを訴えたメッセージなのではなかろうか。
0263nobodyさん2011/08/06(土) 09:13:45.97ID:???
>260
いままでbase64でデコードした事もあるんなら、その暗号の元が何だったかわかるんでね?
暗号について少しでも学んだ事があるんなら分かるはずだが、元と暗号化された後のサンプルが無い事には特定できない。
02642222011/08/06(土) 10:02:22.66ID:JkSTeXHr
>>258
返信ありがとうございます。
再現してやってみたところやはりデッドロックっぽいことになっています。
デッドロックではないのかもしれませんが、select以外のクエリは受け付けません。

>>230でfatal errorを出した直後では*.sqlite-journalは存在しませんが、
同じデータベースで問題のないスクリプトからinsertやupdateをしようとすると、
*.sqlite-journalが作成され、max_execution_timeになったところで削除されます。
削除されたところで、insertやupdateを再び行うと同様の現象になります。
タイムアウトまで次の操作を受け付けず、次の操作を受け付けたところで、
タイムアウトまで何もしないためデッドロックっぽいことになっています。
Apacheを再起動したところで、ようやくinsertやupdateを受け付けてくれます。
02652552011/08/06(土) 14:46:21.36ID:Oz13PhNe
すみません、255なんですが、画像のアップローダを作っててまた問題が発生しました
処理はありきたりで、 アップロードフォーム>確認画面>登録・完了画面 という流れなんですが
確認画面でプレビューするとき元の画像が90度回転して表示されてしまいます

正確に流れを書くと
・確認画面で、画像がアップされたらtempディレクトリから保存用ディレクトリに移動(>>255で書いた処理:move_uploaded_file)
・その後、保存用ディレクトリに移動したファイルを引数にして 出力用.phpで出力
 <img src="imgoutput.php?file=*********.jpg" />という形
・出力用.phpは以下
<?php
$file= $_GET['file'];
header("Content-type: image/jpeg");
readfile($file);
?>

これをやったところ、元は縦長だった画像が横回転して横長画像として表示されてしまいます
何が原因でしょうか? 何度も質問してすみません
02662552011/08/06(土) 14:51:45.80ID:Oz13PhNe
すみません、書き忘れてました
<img>タグの中に入れずに、ブラウザで直接 http://******/imgoutput.php?file=******.jpg をURLとして開くと
正常に、縦長画像のまま表示されます
0267nobodyさん2011/08/06(土) 17:56:47.57ID:???
>>265
長い。3行にまとめてくれ
0268nobodyさん2011/08/06(土) 18:14:44.06ID:???
>>267
確認画面でプレビューするとき元の画像が90度回転して表示されてしまいます
元は縦長だった画像が横回転して横長画像として表示されてしまいます
何が原因でしょうか? 何度も質問してすみません
0269nobodyさん2011/08/06(土) 18:20:04.43ID:???
>>264
*.sqlite-journal が削除されるのなら
リクエスト終了時にトランザクションも終了している訳だ
その問題のないスクリプトとやらも晒して貰えないだろうか
できれば再現する最小のコードで
02702222011/08/06(土) 19:23:37.84ID:DEQATyEe
>>269
返信ありがとうございます。
そしてすみませんでした。>>230は簡素化しすぎでした。
>>230の例だと問題ないことを確認しています。
実際のスクリプトは以下のようになっています。

1.まずDBを作ります a.php
<?php
$db = new PDO('sqlite:test.db');
$db->query('create table if not exists hoge (id integer not null primary key, foo text not null)');
?>

2.とりあえず中身を入れます b.php
<?php
$db = new PDO('sqlite:test.db');
for ($i = 0; $i < 100; $i++) {
$db->query('insert into hoge (foo) values ("aaa")');
}
?>

続く
02712222011/08/06(土) 19:30:52.48ID:DEQATyEe
3.fooカラムの前後に/を入れたものに更新するスクリプトでわざとエラーを起こさせます c.php
<?php
try {
$db = new PDO('sqlite:test.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$length = $db->query('select count(*) from hoge')->fetch(); //登録されてる件数を取得します
$offset = 0;
$db->beginTransaction(); //トランザクション開始
while ($length[0] > $offset) {
$sql = 'select id, foo from hoge limit 10 offset ' . $offset; //メモリを考慮して10件ずつ更新します
$stmt = $db->prepare('update hoge set foo = ? where id = ?');
foreach ($db->query($sql) as $row) {
$stmt->exec(array('/'.$row['foo'].'/', $row['id'])); //ここでわざとエラーしてます executeなら問題なく更新できます
}
$stmt = null;
$offset += 10;
}
$db->commit();
} catch (PDOException $e) {
try {
$db->rollBack();
} catch (PDOException $e) {
}
}
?>

4.2のb.phpを実行するとデッドロックっぽいことになってるのが確認できます。

こんな感じになります。最後のコードが長くなりすみません。
0272nobodyさん2011/08/06(土) 19:46:23.95ID:???
>>268
ID
0273nobodyさん2011/08/06(土) 19:51:40.68ID:???
>>271
primary重複してると思うが
02742222011/08/06(土) 19:59:42.67ID:DEQATyEe
>>273
primary keyのことですか?

>>270の一番最初のスクリプトを見てもらえばわかりますが、

create table if not exists hoge (
id integer not null primary key,
foo text not null
)

としてるので重複はしてないです。
他のことを言ってるのならすみません。
0275nobodyさん2011/08/06(土) 20:00:28.97ID:???
>>265
Exif情報を消してみ
02762222011/08/06(土) 20:00:56.10ID:???
>>273
あ、すみません。意味がわかりました。
SQLiteではinteger型で主キーカラムはオートインクリメントになります。
02772222011/08/06(土) 20:35:12.85ID:DEQATyEe
>>271はややこしいので、さらに簡素化させて再現できました。
hello()は存在しない関数です。

try {
$db = new PDO('sqlite:test.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
foreach ($db->query('select * from hoge') as $row) {
hello();
}
$db->commit();
} catch (PDOException $e) {
try {
$db->rollBack();
} catch (PDOException $e) {
}
}

どうやら、foreachで取るところの中でエラーが起きるとまずいようです。
PDO::queryの例として紹介されてるやり方なんですが、なぜこんなことに・・・
http://www.php.net/manual/ja/pdo.query.php
0278nobodyさん2011/08/06(土) 20:43:13.64ID:???
sqliteなんか使うな
0279nobodyさん2011/08/06(土) 20:52:04.75ID:???
>>268
アップする画像を直接ブラウザで表示してみ
02802692011/08/06(土) 21:29:46.39ID:???
>>277
確かに PDOStatement を foreach でイテレートした時だけロックが開放されてないな
https://bugs.php.net/report.php から報告した方がいい

$con = new PDO('sqlite:test.db');
if (!$con->query("SELECT 1 FROM sqlite_master WHERE type='table' AND name='t'")->fetch()) {
    $con->query('CREATE TABLE t (c INT)');
}

$con->query('INSERT INTO t VALUES (1)');

foreach ($con->query('SELECT * FROM t LIMIT 1') as $row) {
    trigger_error('abort', E_USER_ERROR); # test.db not unlocking
}


バフフィックスされるまでの回避策は
foreach($result as $row) {
を止めて
foreach ($result->fetchAll() as $row) {
または
while ($row = $result->fetch()) {
スタイルを利用するぐらいか
02812222011/08/06(土) 21:35:53.60ID:DEQATyEe
>>280
ありがとうございます。
PHPのバグなんですかね?
英語苦手ですが頑張って報告してみます。

回避策も載せていただきありがとうございます。
早速適用したいと思います。
0282nobodyさん2011/08/06(土) 22:11:32.78ID:???
存在しない関数は
catch (PDOException $e) {

}

でキャッチできますか?

02832152011/08/06(土) 22:15:48.14ID:1n84Kf7N
すみません215です。ID出し忘れていました。
よろしくお願いいたします。

PHPからシェルスクリプトを実行したいのですが
想定通りの動作をしません。

PHPスクリプトindex.phpとシェルスクリプトtest.shは同じディレクトリ内
に配置しており、index.phpには以下のように記述してあります。
<?php
$cmd = "./test.sh";
$ret = shell_exec( escapeshellcmd($cmd) );
print $ret;
?>

test.shには以下のように記述してあり、アクセス権限は711になっています。
#!/bin/bash
echo "AAA"

上記で、PHPでAAAと出力して欲しいのですが、出力されません。
検証のため、C++で生成した以下のようなプログラムをindex.phpと同じディレクトリに配置し、
test.shと同じ方法でPHPから実行したら、想定通りにBBBが出力されました。
#include <iostream>
using namespace std;

int main( )
{
cout << "BBB" << endl;
}


問題点はどこでしょうか?
PHPのバージョンは 5.1.6 です。
0284nobodyさん2011/08/06(土) 22:24:21.91ID:???
>>283
test.shを直接実行した結果は?
アクセス権限を777にした場合は?
0285nobodyさん2011/08/06(土) 23:10:44.53ID:saM8zRUn
簡易rssリーダーみたいなのつくりたくてsimplexmlでブログのrssとか取得したいんだけどさ
複数サイトの記事を更新順にソートしたかったからitemを全部配列にしてから表示するようにしたんだよ
で、個別記事の横に取得元サイトも表示しようと思ったんだけど
item以下から元サイトの名前とかトップページのURLとか持ってこれるところがないんだよ
考えられたのは個別記事URLのドメインから判別して表示とかしかなかったんだけど無駄に長くなりそうだし
なんかいい方法ないかな?

初心者過ぎてわからん
0286nobodyさん2011/08/06(土) 23:16:05.21ID:???
>>285
お前は>>1を読み直すかこっちで聞け
http://hibari.2ch.net/test/read.cgi/php/1271172618/
0287nobodyさん2011/08/06(土) 23:24:05.81ID:???
>>285
あるわけないだろ。
必要なのに長くなるのは無駄とは言わない。
そのままがんばれ。
0288nobodyさん2011/08/06(土) 23:24:47.79ID:saM8zRUn
>>286
ありがとうそうする
0289nobodyさん2011/08/06(土) 23:25:20.21ID:saM8zRUn
>>287
ありがとうそうする
0290nobodyさん2011/08/07(日) 04:02:21.87ID:cdDi892z
やはりオブジェクト指向で書いてないコードを見ると心の中で馬鹿にしますか?
0291nobodyさん2011/08/07(日) 04:10:41.25ID:???
それは馬鹿にしないけどお前のような考えを持ってる奴は馬鹿にするな
0292nobodyさん2011/08/07(日) 04:14:09.81ID:???
でも、馬鹿にしなくても暗黙の了解で

オブジェクト指向>>>>>>越えられない壁>>>>>>>猿>>>手続き型

ですよね?
0293nobodyさん2011/08/07(日) 05:37:33.18ID:???
夏休みだな。
オブジェクト指向カッコイイとか思っていいのは中二までですよ。
0294nobodyさん2011/08/07(日) 05:41:04.80ID:???
>>292
>>1
0295 忍法帖【Lv=34,xxxPT】 【東電 50.3 %】 2011/08/07(日) 07:31:16.86ID:???
⊂二二二( ^ω^)二⊃ブーン
0296nobodyさん2011/08/07(日) 09:03:45.79ID:???
for($priority=1;$priority>=5;$priority++){
$this->m_instance[$priority] = array();
}
var_dump(array_keys($this->m_instance));
array(0) { }

これって凄く寂しい!
0297nobodyさん2011/08/07(日) 09:12:23.34ID:???
ここはぼくの犯したポカミスを報告するスレではありません
0298nobodyさん2011/08/07(日) 09:22:50.30ID:???
$this->m_instance[$priority][] = "data";を考えるとそうでもないと思うんだが
0299nobodyさん2011/08/07(日) 09:26:21.42ID:???
array(0) { }これ何?
0300nobodyさん2011/08/07(日) 09:32:04.06ID:???
>>299
俺が悪かった、忘れてくれ
あれを見てそこに突っ込まれたら何も言う気がしなくなった
0301nobodyさん2011/08/07(日) 09:35:42.91ID:FuUx9FA/
a.phpでクッキーを
$limit = time() * 60 * 60 * 24;
setcookie("hoge","hoge",$limit);
で普通に発行するとa.phpでは確認できるのですが
同じ階層や下の階層のb.phpやc.phpでは取得できません

同一サーバー内で上の階層でもない限り有効パスやドメインを指定しなくていいと思うのですが、なんででしょう
0302nobodyさん2011/08/07(日) 10:10:40.21ID:???
>>301
> $limit = time() * 60 * 60 * 24;
これ何?
0303nobodyさん2011/08/07(日) 10:38:51.89ID:???
時間じゃね?
スゲー桁になってるけどw
0304nobodyさん2011/08/07(日) 10:39:31.59ID:FuUx9FA/
>>302
あああああああああ!!!!
0305nobodyさん2011/08/07(日) 11:42:36.56ID:???
西暦350万年か
2000年問題が小さい事よ
0306nobodyさん2011/08/07(日) 11:49:17.10ID:???
答えは42だな
0307nobodyさん2011/08/07(日) 11:49:55.89ID:???
>>305
いちいち計算してんじゃねぇよ クソが
0308nobodyさん2011/08/07(日) 11:50:22.79ID:???
>>306
いちいち計算してんじゃねぇよ クソが
0309nobodyさん2011/08/07(日) 11:59:19.32ID:???
>>306
まさかphpスレで銀河ヒッチハイクガイドネタ出てくる奴を見れるとは
0310nobodyさん2011/08/07(日) 12:09:48.53ID:???
>>309
こっち見んじゃねぇよ クソが
0311nobodyさん2011/08/07(日) 12:10:47.97ID:???
>>307>>308>>310
お前最高にうんこ
0312nobodyさん2011/08/07(日) 12:15:11.87ID:???
>>311
俺はクソとしか言ってないのに、うんこだなんて、ひどすぎ。
しかも最高のうんこ。
0313nobodyさん2011/08/07(日) 13:06:16.12ID:???
>>312
最高の褒め言葉だと思うんだが
もしかして最低のうんこの方がよかったのか?
0314nobodyさん2011/08/07(日) 13:17:40.38ID:???
>>313
最低のクソの方がいいです。うんこはなんだか生っぽいので。
0315nobodyさん2011/08/07(日) 15:06:51.68ID:???
http://www.youtube.com/watch?v=gZCUHR9DfUs
0316nobodyさん2011/08/07(日) 16:36:40.07ID:???
>>315
ウィルス注意
0317nobodyさん2011/08/07(日) 17:26:35.32ID:???
う○ことかち○こで喜ぶのは小学生までってじっちゃがいってた
0318nobodyさん2011/08/07(日) 18:09:04.88ID:???
そのじっちゃは嘘つきだな
0319nobodyさん2011/08/07(日) 18:14:28.43ID:???
大人はま○こで喜ぶってばっちゃがいってた
0320nobodyさん2011/08/07(日) 18:29:45.47ID:???
そのばっちゃは正直だな
0321nobodyさん2011/08/07(日) 18:32:43.69ID:???
子供の戯れ言に耳を貸すなってかあちゃがいってた
0322nobodyさん2011/08/07(日) 18:35:25.19ID:???
そのかあちゃは賢明だな
0323nobodyさん2011/08/07(日) 21:07:53.36ID:???
子供はま○こなんて知らないってねえちゃがいってた
0324nobodyさん2011/08/07(日) 23:32:41.12ID:???
精神年齢的な意味だろ>子供
0325nobodyさん2011/08/07(日) 23:33:52.83ID:???
おま、空気読めよ・・・
0326nobodyさん2011/08/07(日) 23:41:19.64ID:???
子供のおま○こなんて興味ないってにいちゃがいってた
0327nobodyさん2011/08/07(日) 23:51:57.43ID:???
キモイ
0328nobodyさん2011/08/07(日) 23:54:49.59ID:???
こういう流れは下らん
0329nobodyさん2011/08/08(月) 00:42:16.32ID:???
これだからコミュ障は・・・
0330nobodyさん2011/08/08(月) 01:15:47.57ID:???
ホントはキモくないくせに
0331nobodyさん2011/08/08(月) 02:20:33.57ID:???
XYZ 明日の夜7時新宿公園で待つ KN
0332nobodyさん2011/08/08(月) 03:11:13.54ID:z33upbGp
phpが自由自在に扱える漢になったらニートのオレでも
就職できますか?
0333nobodyさん2011/08/08(月) 03:30:34.84ID:???
無理
0334nobodyさん2011/08/08(月) 03:56:03.84ID:???
>>332
そういう輩は仕事の需要があるから自分で社長でやればいい。
0335nobodyさん2011/08/08(月) 06:27:40.45ID:z33upbGp
>>334
毎日C言語、C++、Javascript、PHPのプログラムの
本を読んでプログラム作りまくって勉強しています。
なんせニートなんで時間はたっぷりあります。
今、23歳なんで30までには起業してみます。
だいたいどのプログラムも同じような感じですが、
htmlとネットワークの知識のいるphpに苦戦してます。
とりあえずブログサービスやSNSサービスをやってみたいです。
0336nobodyさん2011/08/08(月) 06:57:53.72ID:???
>>335
他の同業者に対する優位性は?
0337nobodyさん2011/08/08(月) 07:22:55.16ID:z33upbGp
>>336
日本の20代の若者ですら、パソコンにデジカメの写真を取り込めない人から
ゲーム作って売ってる人まで幅広い層がいます。しかし、初心者ともいえず、
上級者ともいえない中間層がネット上には居場所がないような気がします。
プログラムの解説サイトでも超初心者向けと理解不能な上級者向けの
両極端で中間層がない気がします。なのでそのプログラムなどの勉強してる
中間層を日本全国から集めたようなコミュニティーを作りたいです。
アメブロやmixiよりも匿名性を重視して情報の真偽を明確にする
コミュニティーを作ろうと予定してます。
友達同士で馴れ合いをするようなコミュニティーでなく主に情報の交換
が目的ですかね。
0338nobodyさん2011/08/08(月) 07:33:12.50ID:???
>>337
SEになりたいのかコミュニティ主催者になりたいのかどっちなんだ?
>>336は前者の意味で聞いたんだが。
0339nobodyさん2011/08/08(月) 07:58:35.86ID:z33upbGp
>>338
SEかな、コミュニティー主催者とかは全部大学生バイトとかに試験的
にやらせてみようかなと思ってます。
0340nobodyさん2011/08/08(月) 08:06:38.30ID:???
通常業務のニーズをこなすテクと地図との連携など独自のテクの2本立てで行くのがイイ
0341nobodyさん2011/08/08(月) 09:38:24.91ID:???
スレチだからよそでやれ
http://hibari.2ch.net/test/read.cgi/hp/1311593778/
0342nobodyさん2011/08/08(月) 14:20:21.46ID:ZpEfNsVt
print_r(glob('[example].txt'));

glob 関数において、角括弧が含まれるファイルが返りません
角括弧が含まれるファイル名に一致させるにはどうすれば良いでしょうか
0343nobodyさん2011/08/08(月) 14:30:40.65ID:???
>>342
やった事無いけどエスケープすりゃなんとかなるんでないの
0344nobodyさん2011/08/08(月) 14:34:23.42ID:4ZN6sWYK
数百行のコードがあるとします
その処理の先頭から末尾まででいろんなPHP関数が使われてて、
どこかでエラーが発生したとき(falseが返って、以降のコードの実行が不可能になったとき)に
そのエラーを捕まえたいと思います
地道にやれば関数の返り値をいっこいっこチェックしていくべきなんでしょうが
そうではない方法で効率的にエラーを捕まえる方法はないでしょうか?
apacheのエラーログをチェックする以外の方法で、よろしくお願いします
0345nobodyさん2011/08/08(月) 14:40:29.02ID:???
>>344
エスパーレスするとset_error_handler
03463422011/08/08(月) 14:51:54.71ID:ZpEfNsVt
>>343
ありがとうございます
以下のようにエスケープしてみましたが、一致しません

print_r(glob('\\[example.txt\\]'));
0347nobodyさん2011/08/08(月) 14:55:31.65ID:???
>>346
print_r(glob('\[example.txt\]'));
0348nobodyさん2011/08/08(月) 15:14:34.35ID:???
>>346
お前何やってんだよ
[example].txt がなんで [example.txt] になるんだよ
0349nobodyさん2011/08/08(月) 15:44:19.78ID:???
うるさい ママのおっぱいでもしゃぶってろ
03503422011/08/08(月) 15:52:29.26ID:ZpEfNsVt
>>347
それは>>346と同じではないでしょうか

>>348
申し訳御座いません。間違えました
結果は同様に、[example].txt が返りません

print_r(glob('\\[example\\].txt'));
0351nobodyさん2011/08/08(月) 16:03:55.44ID:???
>>350
いいからやれ
0352nobodyさん2011/08/08(月) 16:07:26.25ID:???
>>351
自分でやれよ
0353nobodyさん2011/08/08(月) 16:09:12.40ID:???
何を?
0354nobodyさん2011/08/08(月) 16:12:28.03ID:???
>>350
\\[ と \[ は全然違う
0355nobodyさん2011/08/08(月) 16:17:36.90ID:???
>>354
文字列リテラルとワイルドカードの話がごっちゃになってね?
0356nobodyさん2011/08/08(月) 16:21:35.10ID:???
ちょっと試したけど
print_r(glob('[example].txt'));
print_r(glob('\[example\].txt'));
print_r(glob('\\[example\\].txt'));

結果
Array
(
)
Array
(
[0] => [example].txt
)
Array
(
[0] => [example].txt
)
0357nobodyさん2011/08/08(月) 17:05:43.95ID:???
' で囲んでエスケープされるの?
echo 'これで改行される??\n';
0358nobodyさん2011/08/08(月) 17:11:16.66ID:???
globに渡してるんだよ。
globそのものは[]や{}はメタ文字の一種だろ
03593422011/08/08(月) 17:30:03.81ID:ZpEfNsVt
>>356
こちらのファイルシステムの方に問題があるようですね
角括弧の部分は ? で代用することにします
有り難う御座いました
03603442011/08/08(月) 18:53:58.47ID:4ZN6sWYK
>>345
ありがとうございます、そういう機能があるのかと調べてみました。
が、公式のPHPマニュアルの例を見たら、結局該当箇所にtrigger_error()でエラーハンドラ呼び出してますよね
http://www.php.net/manual/ja/function.set-error-handler.php
これだと結局>>344で書いた「エラーが起こりそうな処理の返り値をチェックする」のと
労力的に変わらないですね(自分の理解が間違ってるのかもですが)
コードの任意の範囲内で起きたエラーを自動的に捕まえて、任意の処理を実行するみたいなのは
無理でしょうか?

try{}catch(){}も見たんですが、結局これも処理の途中でこまごまと
チェックしてthrow new Exception(); しなきゃいけないし。
SQLのトランザクションの場合は、try{.....}catch() の間でクエリエラーが発生したら
自動でロールバック処理してくれますが、これはDBがそこまで機能を実装してくれてるからってことかな…
■ このスレッドは過去ログ倉庫に格納されています