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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0721nobodyさん2011/04/16(土) 21:01:36.91ID:???
kaijo($sesshon);
0722nobodyさん2011/04/16(土) 23:31:50.34ID:???
unsetでセッションの解除はやりませんよ
0723nobodyさん2011/04/16(土) 23:39:14.45ID:???
session_unsetもunsetもあまりかわらん
0724nobodyさん2011/04/16(土) 23:59:14.71ID:???
>>719

自分で調べなさい。

はい、次の患者さぁ〜ん!
0725nobodyさん2011/04/17(日) 02:18:00.13ID:???
>>719
kaijo($sesshon);
0726nobodyさん2011/04/17(日) 03:52:06.74ID:???
>>724
患者はテメェだボケ〜!
0727nobodyさん2011/04/17(日) 09:09:49.80ID:???
しかしsession_destroyって結構荒い消し方するよな
0728nobodyさん2011/04/17(日) 09:17:54.25ID:???
消し方に荒いとかそんなのあるのか
0729nobodyさん2011/04/17(日) 12:07:08.72ID:???
ひとつずつ、消しますか?YES/NO と聞いてくれなくては紳士的とは言えますまい
0730nobodyさん2011/04/17(日) 12:10:05.87ID:???
session_destroyと書いてる以上、消す意思だろうし
セッションファイルは1つだろうしなにを言ってるのかよくわからんが
0731nobodyさん2011/04/17(日) 12:31:15.22ID:???
俺ぐらいの達人になるとPHPでGUI作ってバイナリ配布できる形式にまで出来るんだけど君たちは?
0732nobodyさん2011/04/17(日) 12:37:31.26ID:???
>>1
0733nobodyさん2011/04/17(日) 12:42:22.75ID:???
俺はPHPでWindowsアプリ作って納品してるよ。先日は画像レタッチソフトを作った。
これぐらい普通でしょ
0734nobodyさん2011/04/17(日) 12:57:48.07ID:???
>>704
逆に、どうすればスマートに記述できますかね。
explode("<>",$l, 2)[0]
という記述ができる言語ならよかったんだけど
0735nobodyさん2011/04/17(日) 14:28:47.08ID:???
>>734
スマートの定義は?
あと>>1
0736nobodyさん2011/04/17(日) 15:43:22.65ID:???
>>735
> スマートの定義は?
質問なら>>1を読んで出直しな
0737nobodyさん2011/04/17(日) 15:54:23.99ID:???
俺ぐらいになるとPHPで彼女作れますよ
もてもてです
0738nobodyさん2011/04/17(日) 15:57:07.53ID:???
俺ぐらいの達人になるとメジャーなオープンソースの開発に携われるようになるよ
んで、PHPがダメ言語だな厨にオープンソースでどんくらい稼げるか書類見せてやって黙らせてる
君らにはそんな実力ないから毎日頑張って勉強して欲しい
もちろん勉強だけじゃ稼げないよ
0739nobodyさん2011/04/17(日) 16:06:44.40ID:???
当たり前のことしか書けないのか
素人丸出しだな
0740nobodyさん2011/04/17(日) 16:10:15.29ID:???
わかったから、次の質問どうぞ

ほら、早く早く

ハァハァ
0741nobodyさん2011/04/17(日) 18:24:08.55ID:???
俺は先日PHPでC言語のコンパイラを書いたけどな
0742nobodyさん2011/04/17(日) 20:04:24.73ID:???
>>741
すごい!
なんでそんなことしたんですか!
0743nobodyさん2011/04/17(日) 21:51:29.07ID:???
俺なんかマクロアセンブラ作ったけどな
0744nobodyさん2011/04/18(月) 00:03:37.17ID:nGStzrzk
>>716さん
display_errors = Onでした
結局必要なerror_reportingのみを選択して解決しました。
具体的には
error_reporting = E_ERROR | E_PARSE
にしました。
お騒がせ致しました。ありがとうございました。
0745nobodyさん2011/04/18(月) 00:15:07.90ID:???
>>744
開発環境ならもっとエラーと警告を出すようにせい
それでも温い
0746nobodyさん2011/04/18(月) 00:37:38.67ID:???
>>744
大体
error_reporting = E_ALL
にしてsyntax errorが出なくなるわけないだろ?
だから元に戻せって言ってんのに
0747nobodyさん2011/04/19(火) 01:58:34.81ID:???
質問です。

Webからプロセスを再起動させようとし次のコードを記述したのですが失敗します。

exec("sudo /etc/init.d/プロセス名 restart" ,$s");

apacheには上記パスのsudo権限パス無しは設定済みです。
どこがおかしくて起動出来ないのでしょうか?
0748nobodyさん2011/04/19(火) 02:04:48.05ID:???
if (!has_read(>>747, >>1)) {
die(>>747);
}
0749nobodyさん2011/04/19(火) 02:28:50.50ID:???
if(DQN(>>748))Ajax(>>1);
0750nobodyさん2011/04/19(火) 04:31:30.29ID:???
>>747
須藤さんの調子が悪いので伊藤さんで試してください
0751nobodyさん2011/04/19(火) 07:17:39.70ID:???
exec("command" ,$s");

引用符の使い方と末尾の全角セミコロン
07527472011/04/19(火) 08:26:15.63ID:???
>>751
おはようございます。

すいません、上記のは記述ミスです。

exec("sudo /etc/init.d/プロセス名 restart" ,$s);

これですけど、起動しません。
よろしくお願いします。
0753nobodyさん2011/04/19(火) 08:35:32.21ID:W2zxScT8
これだけIDだせと言っているのに、いまだにIDを出さない
>>747....
>>747....
>>747....
馬鹿なの?
0754nobodyさん2011/04/19(火) 08:59:10.39ID:L9R4T5O7
web一般の質問?です
ログインを行うHPにて、
セッションタイマーが20分と
Ajaxにてヘルスチェック(ログインしていることの通知)が3分ごとに
設定されている場合に、
ブラウザを開いたまま放置した場合。
20分立てばセッションタイムアウトになるのでしょうか。
それとも3分ごとにブラウザから情報が来ているため、
何分たってもセッションタイムアウトにならないのでしょうか。
0755nobodyさん2011/04/19(火) 10:25:09.97ID:???
>>754
タイムアウトしないと思う
ヘルスチェックってのが何をしてるか、もう少し詳しく書くけば
もっと適切な答えが期待できると思うよ。
0756nobodyさん2011/04/19(火) 10:36:05.49ID:???
どー考えてもスレチ
他人のシステムなんて予想はついても
調べない限り適切な答えなんて出ない
0757nobodyさん2011/04/19(火) 12:36:41.94ID:iclRm0oP
【PHP】5.1.2

set_error_handlerを使ってエラーが発生したときの処理を実装しようとしています。

set_error_handler('fncHoge');
とし、
function fncHoge($errno, $errstr, $errfile, $errline){
//エラーの制御
}

と、記述しているのですが、
このfncHoge関数内で
$errfile, $errlineの内容をログに書きこもうとすると
変数が定義されていませんみたいなエラーがでます。

マニュアル通りに書いたのに何でエラーが出るかわかりません。

なにか気をつけるポイントがあるのでしょうか?
0758nobodyさん2011/04/19(火) 14:07:34.68ID:???
>>757
set_error_handlerはエラーだけじゃなく変数が定義されてない等のワーニングでも呼び出される
fncHoge関数内で、たとえば
if($errno == 1 || $errno == 2 || $errno == 4)
とか自分が処理したいエラーレベルでふりわければいい
07597472011/04/19(火) 14:34:31.31ID:???
自己解決しました。

>>751さん以外は役立たずのゴミどもでしたね。

ほんとご苦労様です。
0760nobodyさん2011/04/19(火) 14:38:31.33ID:???
>>759
スレのルールを守ってないお前が悪いらしいよ
よく知らんけど
07617472011/04/19(火) 14:59:18.79ID:ObrOm4D8
いやいや解決してないからw
偽物乙。お暇ですね。


本買ってきたから読んで勉強しなきゃ。
でもEXECについて詳しくのってないんだよなぁ。

シェルをキックさせた方が良いのかしら。
0762nobodyさん2011/04/19(火) 15:43:11.72ID:???
>>747,761

既に最初の質問の段階でIDを出していないことからスレ違い。

むしろこれだけレスを重ねていることから荒らし認定。

出直しておいで。
07637572011/04/19(火) 15:49:58.74ID:iclRm0oP
>>758
解決しました。
ありがとうございました。

0764nobodyさん2011/04/19(火) 15:55:17.04ID:???
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
0765nobodyさん2011/04/19(火) 17:31:23.47ID:???
教えて君の極意
一. 努力を放棄すること
  教えて君たるもの、努力をするなど以ての外である。
一. 情報を開示しないこと
  エラーなど必須の情報を知らせてはならない。
  「いろいろやってみたけど動きません」が理想のセリフである。
一. 答える人間の事を考えないこと
  教えて君は相手の事を考えるようでは失格というものだ。
  教えて君グループは世界中に拠点を持っている。
  日本の教えて君ブランドを汚してはならない。

日本の教えて君がなめられないように日々、自分で努力して調べないで人を使ってほしい。
07667622011/04/19(火) 18:03:12.51ID:fgmca1z+
>>765
解決しました。
ありがとうございました。
0767nobodyさん2011/04/20(水) 20:57:28.37ID:ftmBb0O8
preg_replace の第3引数で大きなデータを扱おうとすると、null が返るときがあります
error_reporting = E_ALL | E_STRICT にしていますが、エラーメッセージは出ずに処理が続行されます
どうして null が返るのでしょうか
0768nobodyさん2011/04/20(水) 21:02:48.30ID:???
>>767

> 第3引数で大きなデータ

どの程度に「大きくて」、どの程度に「大きくないか」を教えてください。
0769nobodyさん2011/04/20(水) 22:23:38.66ID:???
近頃のPHPは名前空間に対応しているのかい?
Javaのpackageに相当する機能を使いたいのだが
0770nobodyさん2011/04/20(水) 23:06:29.33ID:???
>>769
5.3以降なら可能
0771nobodyさん2011/04/21(木) 01:24:10.47ID:???
>>768
質問は>>1を読んでからにしろ
0772nobodyさん2011/04/21(木) 07:16:38.51ID:XEGIAaxg
日本語文字列をu3042u3042u3042u3042のようにエンコードせずにそのままで
json_encodeする方法はないでしょうか?
0773 【東電 63.4 %】 忍法帖【Lv=6,xxxP】 2011/04/21(木) 07:23:01.97ID:GH5Vi5/t
>>770
見てきた。たしかに対応しているっぽいね。
しかし、後付しただけに随分と煩雑だ
Javaのpackageよりパターンが豊富でいろんなことができるようだが、
Javaのpackageとimportとの組み合わせと比べると気持ち悪いコードを書く輩が増えそうだな…
ソースコードが読みにくくなったら本末転倒だ
コーディング規約をいちいち定めないと面倒なことになりそうだな


JavaのCheckStyleに相当するコーディング規約チェックツールは、PHPにはあるかな?

ついでに、Javaのバグの温床になるコードを自動検出してくれるFindBugsちうチェックツールはPHPにはあるかな?
0774nobodyさん2011/04/21(木) 07:30:09.90ID:???
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode ? 値を JSON 形式にして返す
説明
string json_encode ( mixed $value [, int $options ] )
value を JSON 形式にした文字列を返します。
パラメータ
value
エンコードする値。 resource 型以外の任意の型を指定できます。
この関数は、UTF-8 エンコードされたデータでのみ動作します。
0775nobodyさん2011/04/21(木) 07:39:44.75ID:???
>>773
あるかな?ではなく
ありますか?だろ
0776nobodyさん2011/04/21(木) 07:43:42.04ID:???
言葉尻を叩いても何も得られない。
言葉遣いが悪い奴は何も得られない。
0777nobodyさん2011/04/21(木) 09:04:24.29ID:???
変なのが粘着してきてるな
0778nobodyさん2011/04/21(木) 10:19:24.70ID:???
>>777
質問は>>1を読んでからにしろ
0779nobodyさん2011/04/21(木) 10:29:46.86ID:???
今PHP5.3への移行期だからガンガン使え
0780◆oDupeixhZv52 2011/04/21(木) 11:51:47.10ID:???
>>772
json_encodeのページの__json_encodeのエンコード部分を殺してつかうとか。
0781nobodyさん2011/04/21(木) 12:15:36.49ID:???
>>773
大抵ないとおもっていいよ。
ある場合も多いが、その質に過度な期待をされても困るので。
0782nobodyさん2011/04/21(木) 15:48:21.53ID:???
>>780
日本語(UTF8)だったら、自前でエンコードする必要ないんだろ?
0783nobodyさん2011/04/21(木) 16:01:17.06ID:XEGIAaxg
仕方がないので、日本語部分を"%TEXT%"などとしておいてjson_encodeして
その後にstr_replaceで日本語と置換するという方法を使いました。
今回は小さいデータだからこれでもいいけど、もっと良い方法はないものか
0784nobodyさん2011/04/21(木) 16:11:03.09ID:???
UTF8で渡せば良いだけだろ。
0785nobodyさん2011/04/21(木) 16:12:11.03ID:???
>>783
それだと、バイナリデータになり制御コードが混じる場合があるんだろ。
0786nobodyさん2011/04/21(木) 16:16:29.88ID:XEGIAaxg
>>784
文字列もソースコードもUTF8なんだけど、勝手にエンコードされる。
0787nobodyさん2011/04/21(木) 16:23:59.84ID:???
>>786
エンコードしないとデータがバイナリになるんだよ。
jsonデコードしたら、文字列も自動でデコードされる。
0788nobodyさん2011/04/21(木) 16:25:59.90ID:???
格納方式にこだわるならばjsonを使うなよ。
そういうフォーマット。
バイナリデータを直接格納するにはそういうフォーマットつかえ。
メールデータをBASE64にするのと一緒。
0789nobodyさん2011/04/21(木) 16:33:51.66ID:XEGIAaxg
POST先のAPIにjsonで、UTF8で日本語そのまま渡さないといけないから仕方がない
という事情なので質問しました。
多分そのAPIがおかしいんだと思う。デコードしてくれりゃいいのに。
どことは言わんけど日本で一番有名なSNS?
07907672011/04/21(木) 16:42:28.91ID:Ljywmxzd
>>768
失礼致しました

DOMDocument::loadHTML で正常に読み込めるようにするため
不完全な HTML から、重複する id のうち最後のものだけを残そうとしています

$example = preg_replace('/(id=".+?")(.+?)\\1/s', '\\2\\1', $example);
上のような記述をしていますが、対象データが大きいと null が返る場合があります

現在は検索で id をリストアップしてから削除処理していますが
preg_replace ではどうして失敗するのでしょうか

【成功】
<title id="foo"></title>
<p id="bar">テスト1</p>
<p id="bar">テスト2</p>
以降 60KB 程度の文章

【成功】
<title id="foo"></title>
<p id="foo">テスト1</p>
<p id="bar">テスト2</p>
以降 70KB 程度の文章

【エラー】
<title id="foo"></title>
<p id="bar">テスト1</p>
<p id="bar">テスト2</p>
以降 70KB 程度の文章
0791nobodyさん2011/04/21(木) 16:42:32.00ID:???
エンコードなしで任意の文字が渡せるとなると、jsonの区切り文字すらそのまま格納することになるが。
0792nobodyさん2011/04/21(木) 18:31:02.76ID:???
>>789
ユー自作しちゃいなよ
http://ideone.com/nevGC
RFCは流し読みしかしてないから間違いがあるかも知れんが
0793nobodyさん2011/04/21(木) 18:50:24.50ID:0idGxcNP
皆さんはPHPでエラーが発生してシステムが落っこったりしたときの
対処方法はどのようにされてますか?

もしくはエラーが発生したときの検知の方法は何か一工夫されてますか?

エラーが発生したときにログに書きこむようにして、
cronでログに何か書き込まれていないか確認するように
しておくとか考えているんですが・・・如何なもんでしょ?
0794nobodyさん2011/04/21(木) 19:07:09.39ID:???
どこでエラーで止まるか不明だし。
止まる予定の所すべてで、おかしくなりそうなら情報をファイルへ書き出す仕組みを挿入するしかなくないか。
面倒だが。
0795nobodyさん2011/04/21(木) 19:09:10.88ID:???
メール送信やツイッター送信でも良くないか。
PHPが動いている(ローカルな)サーバーだけに出力を残すこともない。
0796nobodyさん2011/04/21(木) 19:55:44.61ID:???
>>793
基本はログを残すこと。
エラー時だけ残すのか、正常時も含めたトレースログを残すのかはシステムによる。
次にログを監視すること。
cronで監視してエラー時だけ通知するのか、生存確認の意味も含めて定期的に通知し続けるのかはシステムによる。
必要であれば外部からも定期的にアクセスして監視。
0797nobodyさん2011/04/21(木) 20:16:32.48ID:???
朝起きたら6万通のエラーメールが届いていたことがあるから>>793のやり方が良いと思うよ
ちなみになんで6万かっつーと、夜中にMySQLのDBが壊れやがってWebサイトにアクセスあるたびにDB接続エラーがえんえんとry
0798nobodyさん2011/04/21(木) 20:52:11.99ID:???
ばかす
0799nobodyさん2011/04/21(木) 21:04:51.08ID:LlCZE+TN
質問です
date型で呼び出した数字 (date("Ymd",タイムスタンプ)が20111021とか) をそのままint型に変える事は出来るんでしょうか?
一度stringにしてintにしても、表示された数字ではなく、内部ポインタ変数っぽい別の数字が値になってしまいます

一度HTMLやデータベース等に文字として出力し、そこから受け取ればなんとかなりますが、出来ればPHPのみで型変換がしたいです
0800nobodyさん2011/04/21(木) 21:08:04.68ID:???
PHPにdate型なんてねーよ
0801nobodyさん2011/04/21(木) 21:31:42.53ID:???
>>799
var_dump( intval(date("Ymd")));
08027992011/04/21(木) 22:43:20.01ID:???
失礼しました
date("YmdHis") で出して、それがINT範囲の上限を超えていたのが原因のようです。
floatval で浮動小数点型に直したら問題なく利用できました。
0803nobodyさん2011/04/21(木) 23:05:21.28ID:???
ところで何をしたかったんでしょう・・・
文字列のままでいいじゃん
08047992011/04/21(木) 23:10:12.47ID:???
>>803
データベースにぶっこんだ後、比較演算子利用して指定データを取り出したりしたかったので
文字ではなく数字に変える必要がありました。
0805nobodyさん2011/04/21(木) 23:12:20.81ID:???
データベースにぶっこむって
文字列のままつっこめばいいのに。
データベースが文字列でも比較できるんだし、
データベースが数値型でも文字列で突っ込めばいい。
0806nobodyさん2011/04/21(木) 23:28:01.49ID:???
DBによるけど日付型でDBに登録して日付比較するのが基本だと思うが
0807nobodyさん2011/04/21(木) 23:48:45.32ID:???
仮にプレースホルダで型のチェックしてる時も
PHPの場合はINTを指定してもINTでないから受け付けないというよりINTにキャストして渡してくれるしな
0808nobodyさん2011/04/22(金) 00:02:45.79ID:???
>>807
データベースの型をINTにしたため、PHPもそれに合わせて自動でINTにキャストした結果

「DATE(”YmdHis”)=(STR)201104222359」

         ↓  PHPでの自動処理

「(INT)2147483647 」 ← INTでの上限値
         
         ↓
「」
0809nobodyさん2011/04/22(金) 00:05:24.23ID:???
誤送信 下から続き  

   ↓ PHPからデータベースに代入
「(INT)214748347」

となっていたようです。
次からは素直にデータベース側をDATETIMEに指定して利用します。
0810nobodyさん2011/04/22(金) 00:22:05.82ID:???
unixtime使えばいいのに日付を連結して数字として扱うとか意味がわからん
あと内部ポインタ変数ってなんだったの?
0811nobodyさん2011/04/22(金) 01:13:51.33ID:???
そもそもDBで日付をINT型で保持しようとするのがあほなんだろ
0812nobodyさん2011/04/22(金) 02:20:33.83ID:b2miHkLW
phpを自在に使える漢になったら、彼女できるのか?
0813nobodyさん2011/04/22(金) 03:14:30.60ID:???
逆。彼女が出来なければPHPを自在に使えるようにはならない。
0814nobodyさん2011/04/22(金) 04:28:37.95ID:b2miHkLW
>>813
何だと!?なんてリア充向けがプログラミング言語なんだ
0815◆oDupeixhZv52 2011/04/22(金) 11:55:32.83ID:???
荒らすならID付で。これ常識ね。
08167932011/04/22(金) 12:01:14.75ID:???
皆様たくさんのご意見ありがとうございました。

ひとまずエラー時にログファイルに出力するようにして
クーロンで定期的にファイルが更新されていないかを
確認し、更新されていたらメールで通知するようにします。

さすがに6万通もメールがきたら、
私の携帯だと、受信するだけで
バッテリーが無くなりそうなので。

そして、それとは別に生存監視もしていこうと思います。
0817nobodyさん2011/04/22(金) 14:09:45.37ID:S4ofJDv4
【OS名】Linax
【PHPのバージョン】5.3
【質問内容】
$string = '1111-111111';
$search = '/[^0-9]/';
$replace = '';
if (preg_match($search, $string)) {
$string = str_replace($search, $replace, $string);
}
こんな感じで'-'を置換したのですが、なぜか出来ません。
preg_match()では、マッチしているのに。。。
ちなみに'-'であったり'ー'する可能性があるので、
str_replace()を使ってます。

よろしくお願いします。
0818◆oDupeixhZv52 2011/04/22(金) 14:19:30.37ID:???
$string = '1111-111ー111';
$string = str_replace(array("-","ー"), $replace, $string);
08198172011/04/22(金) 14:27:34.96ID:???
>>818
なるほど。。。単純に可能性のある文字を
潰していった方がいいみたいですね。

了解しましたありがとう。
0820nobodyさん2011/04/22(金) 14:29:36.99ID:???
それ以前にstr_replaceは正規表現検索できないわけだが。
■ このスレッドは過去ログ倉庫に格納されています