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

【PHP】下らねぇ質問はここに書き込みやがれ 67

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/04/11(金) 06:38:35ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 66
http://pc11.2ch.net/test/read.cgi/php/1205655807/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0372nobodyさん2008/04/21(月) 00:51:15ID:???
パソコンの電源がつかないのですけどどうしたらいいですか?
0373nobodyさん2008/04/21(月) 00:55:33ID:???
>>371-372
http://life9.2ch.net/test/read.cgi/utu/1208624190/
03743662008/04/21(月) 07:24:16ID:f7rHed3v
JP1とかはどうでもいいんで、
私の質問に対して、良い案は
ありますか?
お願いします。
0375nobodyさん2008/04/21(月) 07:37:38ID:???
phpでいくらでも.htaccess編集したればいいじゃん
0376nobodyさん2008/04/21(月) 07:56:46ID:???
なかったら作れよ

>>375
0377nobodyさん2008/04/21(月) 12:32:43ID:8HZkrnGU
mail関数を連続で実行することで、
メールの遅延が発生したりするのでしょうか?

お問い合わせフォームを作った時、管理者・問い合わせ者・保存用と
3つの箇所に送信するのですが、たまにメールの受信が遅かったり
バラバラに受信したりします。
0378nobodyさん2008/04/21(月) 12:41:06ID:???
>>377
だから、そういう時のためJP1を使ってジョブの異常系を制御しろよ。
0379nobodyさん2008/04/21(月) 12:50:44ID:???
>>377
メールってそんなもんだろ
03803772008/04/21(月) 13:08:39ID:8HZkrnGU
>>378
「JP1」と言うのを検索しましたが、
メール処理とあまり関連しないような気が・・・。
>>379
「そんなもんだ」とは思っているのですが、
メールが届かない事による語弊もありますし、
プログラムに詳しくない人は「メールは必ず届くものだ」と
考えるので、お問い合わせフォームでそれが起きると不安がられます。
0381nobodyさん2008/04/21(月) 13:16:15ID:???
「遅れることがあるよん」と謳っておけ

いつでもラグレスで届くシステム作ったらそれだけで億万長者になれるわw
0382nobodyさん2008/04/21(月) 13:20:19ID:???
>>377
SMTPサーバのログとキューを確認したら?
きちんとmail関数で送信できる?
それとPOP/IMAPサーバの方もチェックした?


>>378
JP1は無関係だろ?
一応は送信できているんだからジョブは生きてるだろ
0383nobodyさん2008/04/21(月) 13:26:25ID:???
週末から今日までのログを読んで笑わせてもらった。
ありがとう。
03843772008/04/21(月) 13:36:11ID:8HZkrnGU
>>381
それは注意事項に記載しているのですが、
いかんせん電話までしてくる人が多くて‥。

>>382
サーバの事は疎くてSMTPサーバのログとキューは確認してないです。
また、mail関数(厳密に言えばmb_send_mail関数)を使っていて
これまで問題なく送信、一括配信など行えていたのですが、
なぜか今作っているサイトでは遅延が発生します。

やっぱりサーバの問題もあるんですかね?
さくらインターネットのサーバなんですが。
03853772008/04/21(月) 13:38:55ID:???
少しググったのですが、もしかして
サーバのPHPが4.3.9なのが原因なのかも・・・。
0386nobodyさん2008/04/21(月) 13:48:07ID:???
>>384
> これまで問題なく送信、一括配信など行えていたのですが、
> なぜか今作っているサイトでは遅延が発生します。

どちらも正常な動作ですよ。電話鳴らされるのはご愁傷様としか言えない。
メール配送の仕組みや MTA のご機嫌の問題を PHP で解決するのは大変そう。
0387nobodyさん2008/04/21(月) 13:53:45ID:???
てか、メール遅延なんて、自分の鯖だけで解決する問題じゃないだろ
0388nobodyさん2008/04/21(月) 13:54:56ID:???
その気持ちは分かるけど、俺も人を疑うことを止めて、
人を信じることから接してみたら?

俺もそうしたら、幸せなことが増えたと思う。
苦情をネガティブに考えないで、感謝する気持ちで捉えてみて。
03893772008/04/21(月) 14:01:16ID:???
>>386
やっぱり「普通のこと」なんですね。
さっきサーバに詳しい友人にも電話して聞いてみたのですが、
「メールの遅延や送られないことはある。でもPHPのバージョンを変えるとか
 サーバの設定を変えるとかそういう操作は時期早々。やらない方が良い」

と言われました。ですので、このまま静観します。
ご回答いただいた方、ありがとうございました。
0390nobodyさん2008/04/21(月) 14:01:53ID:eazv5Nmh
error_reportingの設定って、みんなE_ALLとかE_STRICT使ってる?
0391nobodyさん2008/04/21(月) 14:05:44ID:???
送信数が多いならキューを分割してプロセスをリッスンして心太方式にするのもいいカモメ
0392nobodyさん2008/04/21(月) 14:06:06ID:???
>>389
プロなら、しょうがないで済まさないぞ。
メールが送信できないケースには様々な原因が考えられるが、
リターンメールが帰ってくるケースではそれに対処するプログラムを組む必要がある。
でないと、到達不能メールが無限ループを繰り返し、相手のサーバーは中継サーバーもダウンさせる。
そうなったら、威力業務妨害で捜査を受ける場合もあるし、賠償問題にも発展する。
かかる観点まで見通して実装するかどうかが、プロとアマの分水嶺だよ。
0393nobodyさん2008/04/21(月) 14:08:42ID:???
>>384
ログ解析したら、だいたのボトルネックが分かるものだよ
0394nobodyさん2008/04/21(月) 14:18:19ID:???
「問い合わせフォーム」にMAILER-DAEMONさんへ自動返信する機能を
実装するかどうかが分水嶺なのですね。わかります。
03953772008/04/21(月) 14:19:08ID:???
mb_send_mail関数を使ってもサーバのメールログに情報が残るんですか?
お恥ずかしながら、sendmail送信の場合、ログが残らないと思っていました・・。

と言うことは、そのログを閲覧できるレンタルサーバを借りなければ
いけないと言うことですよね?さくらじゃ無理そうだ・・・
0396nobodyさん2008/04/21(月) 14:22:38ID:???
共有レンサバじゃ厳しいだろな
送信関連の規制にひっかかってるんじゃね?
スクリプトである程度調整できるかもしれないけど。
03973772008/04/21(月) 14:25:00ID:8HZkrnGU
>>396
1日10件もお問い合わせがないので、送信規制にかかってなさそうです。
アクセスも多くて500PVほどですし。

結構、簡単に考えていたのですが、色々と考えるべき事が多いのですね。。
03983902008/04/21(月) 14:25:02ID:eazv5Nmh
漏れの質問はスルーですか、そうですか。
0399nobodyさん2008/04/21(月) 14:27:24ID:???
スパムメールサーバーとして、ルートサーバーに登録されてしまったら、
そこから送信されるメールは一切受け付けてくれなくなるよ。
インターネットで死亡宣告を受けるようなもの。

数件ならいいけど、数百件にもなったら危険水域。
0400nobodyさん2008/04/21(月) 14:30:40ID:???
>>390
(PHP_OS != 'WINNT') ? error_reporting(0) : error_reporting(E_ALL);
0401nobodyさん2008/04/21(月) 15:55:39ID:tP2T0+Jy
phpmyadminのようにサーバ上のSQLiteデータベースファイルをブラウザで
編集できるアプリってありますか?
0402nobodyさん2008/04/21(月) 16:13:15ID:???
探したら、あった
http://phpsqliteadmin.sourceforge.net/
0403nobodyさん2008/04/21(月) 16:21:47ID:tP2T0+Jy
>>402 ありがトン!早速試します。
0404nobodyさん2008/04/21(月) 16:46:56ID:???
JP1JP1って日立の中の人なのか?
04053902008/04/21(月) 16:47:11ID:eazv5Nmh
>>400
サンクスコ
04063662008/04/21(月) 16:53:15ID:???
自分で作りました。
ありがとございました。
0407nobodyさん2008/04/21(月) 21:40:04ID:???
粘着キティは通院日かな?
0408nobodyさん2008/04/21(月) 21:56:39ID:???
このスレ、回答者が釣りなのかマジなのかわかんねぇ。
無限ループって何だよ。
Fromを入力可能にするとか?ありえないし。
メールヘッダーインジェクション可能だと、サーバー止められるかもだけど。

>>390
作る時はE_STRICTでやってる。

なんか、本番環境でdisplay_errorがonの所多過ぎない?
ちなみにdisplay_errorはini_setしてもあまり意味無い。
iniでdisplay_error offで、ini_setでonにすると、
パースエラーの時、ini_set自体が実行されないのでパースエラーが表示されない。
逆も然り。
まあ、逆の場合は本番環境でパースエラーは無いだろうから良いっちゃ良いけど、
精神衛生上良くない気がする。
0409のし図2008/04/21(月) 23:17:05ID:YYj5TAUN
mkでこんなセキュホみつけたのですが、ここからindex.cgiのソースを見るにはどうすればよいのでしょうか?
http://mk-board.net/koukoku.pm
穴みたいです
セキュリティに詳しい方教えて下さい
0410nobodyさん2008/04/21(月) 23:22:27ID:???
ここはperlじゃないよ。

cgiは関連付けされてるから見えないみたい!?
0411のし図2008/04/21(月) 23:28:53ID:YYj5TAUN
>>410
何かと方法ってないのですか?
0412nobodyさん2008/04/22(火) 00:07:08ID:???
ここはperlじゃないよ。
0413nobodyさん2008/04/22(火) 03:24:49ID:???
そんな穴じゃ抜けない
0414nobodyさん2008/04/22(火) 11:42:41ID:dlLjXVhc
phpのsymlinkってアトミックなんでしたっけ・・・?
DBがMysqlのmyisam使わなきゃで、行ロックの代わりをやる必要が・・。
0415nobodyさん2008/04/22(火) 11:49:33ID:???
アトミックで鉄腕アトム的ってこと?
0416nobodyさん2008/04/22(火) 11:50:02ID:???
>>415
ちょーーー受けるwwwww
0417nobodyさん2008/04/22(火) 11:50:32ID:???
>>415
その発想はなかったわwwww
0418nobodyさん2008/04/22(火) 12:41:18ID:???
このスレもこの程度か
相手になりませんでした
0419nobodyさん2008/04/22(火) 13:17:40ID:???
クォリティ高須クリニック
0420nobodyさん2008/04/22(火) 14:11:59ID:???
>>415-419
無職ニート池沼うざい
0421nobodyさん2008/04/22(火) 15:32:48ID:???
mkboardの穴なつかしすぐるw
wwwlangとかあゆ板とかなゆ板にもあるんだよな
0422nobodyさん2008/04/22(火) 18:20:03ID:???
mkタクシュリティ
0423nobodyさん2008/04/22(火) 21:57:48ID:???
固定の拡張子を付けてテンポラリファイルを作りたいんですけど
何かいい手法はありますか?

tempnamでprefixじゃなくてsuffixの指定ができれば悩む必要なかったのだが
0424nobodyさん2008/04/22(火) 22:30:17ID:???
>固定の拡張子を付けてテンポラリファイルを作りたい
何故に?
0425nobodyさん2008/04/22(火) 22:31:44ID:FtmTZwRr
一意の名前ということなら
time() . '.tmp' じゃだめ?
0426nobodyさん2008/04/22(火) 22:39:33ID:???
一時的なファイルではあるんですけど、セッションの途中でブラウザに渡す必要があったもので
コミットしちゃえば正式なファイル名を振るんでユニークなIDも付けるんですが

time() . ".tmp"だと1秒以内に同時に作成されたときに一意性が保証されないですよね
microtime()を使ってファイルを作ってみてダメならリトライを数回やるってのは
よほどのアクセスが無ければ大丈夫な気はしますが泥くさいかなあ
0427nobodyさん2008/04/22(火) 22:42:11ID:???
uniqidは?
0428nobodyさん2008/04/22(火) 22:44:15ID:???
あ、microtimeを使うならuniqidでも一緒でしたね
0429nobodyさん2008/04/22(火) 22:47:02ID:???
uniqidでやってみます
ありがとうございました
0430nobodyさん2008/04/23(水) 02:18:22ID:Wcjf8rbS
すみません、下記の2点がわからなくて困っています。
すみませんが対処法をお分かりになられる方がおられましたら教授よろしくお願いいたします。

1.PHPでフォルダ(中にフォルダ・ファイルが入っています)を削除(unlinkやrmdir)しようとrmdirコマンドを実行しましたが、「中にファイルなどが入っているので消せません」とエラーになりました。再帰的にファイルを削除するしか方法はないのでしょうか?
参考になる再帰的にファイル・フォルダを削除するロジックを
ご存じでしたらご教授よろしくお願いいたします。


2.同様に、フォルダ(中にフォルダ・ファイルが入っています)をコピーしようとcopyコマンドを実行したら「権限がありません」とエラーが表示されました。
当方の環境はlinux環境ではなくwindows環境ですので権限とか関係ないように考えていたのですが、
windows環境でもディレクトリに権限の設定が必要なのでしょうか?
(また、chmod関数で0777権限を設定しましたがコピーできませんでした・・・)

0431nobodyさん2008/04/23(水) 02:23:13ID:???
>>430
1.いい経験になるから自分で考えられるところまで作ってみるべし
0432nobodyさん2008/04/23(水) 03:07:35ID:???
>>430
そのあたりのファイル関数は単体に使うものなので再帰的に処理するのが普通
環境依存してもいいとかならsystem()で"rm -rf foo"等のCLIコマンドを叩く方法もあるけどオススメしない
opendir()とか使ってロジックを組んでみるといいよ
0433nobodyさん2008/04/23(水) 05:14:59ID:???
>>430
既出だが、異常系の処理をしっかりと対応するなら、JP1とかがお勧め。

そういうのを最初から実装するのは手間とお金が掛かるし、
なんでもphpという一つの技術だけで解決しない方がいい。
0434nobodyさん2008/04/23(水) 05:26:30ID:???
あらやだ。JP1君がいらしたわ。
0435nobodyさん2008/04/23(水) 05:51:15ID:???
JP1に敵意むき出しの富士通社員がいるね。
0436nobodyさん2008/04/23(水) 06:25:52ID:???
jp1にこだわりをみせるフリをした新米se君がいるスレですね
0437nobodyさん2008/04/23(水) 08:33:19ID:???
日本一()笑言語w
0438nobodyさん2008/04/23(水) 09:06:47ID:???
phpも極めてる人のソースはすごいけどね
0439nobodyさん2008/04/23(水) 10:30:51ID:???
         __ ____
      //   ̄  \\    
     //--.--  -─\\    
   //  (● ●) ((●(●) \            地震とかどこの田舎だよ
 .| |.|    ( . ((_人_人__)    | _ _== =   
     \\    ⌒ ` /,/ | |    ̄ ̄ ̄  ̄| ||
    ノ         \\| | | |           ||
  /´                 | |          | |
 |    l                | |          |||
 ヽ    -一ー_~、⌒)^),-、   | |_________| |
  ヽ ____,ノγ⌒ヽ)ニニ- ̄   | |  | = =
0440nobodyさん2008/04/23(水) 19:54:20ID:???
>>439の画像、より目にして、
黒の目玉を二つにすると、
なんと画像が立体に見えません。
0441nobodyさん2008/04/23(水) 23:30:52ID:???
php5を使っていると、不定期に「Out of memory (Needed 2095360 bytes)」
のエラーが発生していて困っています。

具体的には、MYSQLに接続してmysql_queryを発行した後に結果セットが返却されません。
このエラーが発生した直後の接続は、半分程度の確率で以下のエラーが発生してDBへの接続エラーが発生します。
:mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

対処方法がありましたら、教えて下さい。
宜しくお願いします。
0442nobodyさん2008/04/23(水) 23:31:14ID:k1ODucws
441です。sageてました。
0443nobodyさん2008/04/23(水) 23:31:28ID:???
メモリ食いすぎの部分を直す
0444nobodyさん2008/04/24(木) 00:22:52ID:???
ファイルが存在する場合のみ処理を実行するため、
$fp = fopen("./$abc.txt", "r");
if($fp != null)
処理〜

というように組んでいるのですが、
この時、ファイルが存在しておらず、$fpの値がnullだった場合でもfcloseで閉じる必要はあるのでしょうか?
0445nobodyさん2008/04/24(木) 00:58:17ID:???
>>444
fopenでファイルの存在確認するのはお行儀が悪いですね
0446nobodyさん2008/04/24(木) 00:59:05ID:LaHdtlHM
>>439の画像、目玉をトリプルクリックするとなんと目からビームを発射しません。
0447nobodyさん2008/04/24(木) 00:59:25ID:???
>>444
しかもfopenで失敗したのだからファイルは開けてないのに何故閉じる必要があるのだ
あけてないものを閉じる意味が理解不能
0448nobodyさん2008/04/24(木) 01:01:45ID:???
> fopenでファイルの存在確認するのはお行儀が悪いですね
それは素人の意見ですね。

どうせfopenの前にfile_existsとかで調べろといっているのでしょうが、
file_existsとfopenの間にファイルが消されたらどうするんですか?
マルチタスクOSなのだからありえる話です。
0449nobodyさん2008/04/24(木) 01:01:47ID:???
とりあえず・・・そんなあなたにfile_exist()
0450nobodyさん2008/04/24(木) 01:03:10ID:???
書く前に否定された。
0451nobodyさん2008/04/24(木) 01:04:50ID:???
file_exists(笑)
0452nobodyさん2008/04/24(木) 01:08:05ID:???
なんで最後に「マルチタスクOSだから!OSがマルチタスクなんだから!」という
ネタを持って来るんだ。
0453nobodyさん2008/04/24(木) 01:09:47ID:???
どうでもいいところに突っ込むな
0454nobodyさん2008/04/24(木) 01:26:58ID:???
>>>444=448
0455nobodyさん2008/04/24(木) 01:28:00ID:???
つーことは、お前、質問者に
ダメ出しされてるのかよw
04564442008/04/24(木) 01:32:57ID:???
>>445-
ありがとうございました。fcloseは必要ないようですね。
fopenで処理を分けるのもよく無さそうなので再考してみます。
0457nobodyさん2008/04/24(木) 02:08:48ID:???
ファイルの存在確認後に削除されてたなら、それが正しい「Worning」たる理由なんじゃね?
04584572008/04/24(木) 02:09:11ID:???
Warning.
0459nobodyさん2008/04/24(木) 02:13:26ID:???
何を言いたいのかさっぱりわからんw
0460nobodyさん2008/04/24(木) 02:40:13ID:LhY+BYrB
PHPでCのように 7 / 2 で整数の 3 が欲しい時は
floor(7/2) とするのが一般的ですか?
0461nobodyさん2008/04/24(木) 03:19:38ID:???
>>460
C99 と合わせたかったら 0 に近付くように丸める。
intval(7/2) か整数型へのキャスト (int)(7/2) で。
0462nobodyさん2008/04/24(木) 04:00:47ID:???
file_exists、fopen、 両方で判別するのが大人。

どっちの方法とか言ってる時点でウンコ。
0463nobodyさん2008/04/24(木) 04:19:28ID:???
セーフモードも考慮するとfile_existsなんて使わないで別の関数があるだろ
0464nobodyさん2008/04/24(木) 04:21:02ID:???
>>462
それで満足気に話しているお前が痛々しいだけ。

file_existsで存在を確認した後に、fopenの処理をするまでの間に
ファイルが存在しなくなる可能性はある。
1日10万PV位のサイトを運営していると、そんなケースなんて日常茶飯事。

まぁ、素人に言ってもしょうがないがwww
0465nobodyさん2008/04/24(木) 04:24:12ID:???
煽りたいだけの奴はよそいってくれ
0466nobodyさん2008/04/24(木) 04:36:22ID:???
素人ども向けに「俺様がてめえらに教えてやる排他制御」でも書いてくれたほうが
煽りよりずっといいよ。
0467nobodyさん2008/04/24(木) 04:41:32ID:???
>>462
JP1は黙れ。
0468nobodyさん2008/04/24(木) 05:26:59ID:???
レスが増えてると思ったら煽るだけで提案しないバカがまた沸いたのか
04694602008/04/24(木) 06:31:20ID:1f8tGK11
>>461
ありがとうございます
0470nobodyさん2008/04/24(木) 10:09:19ID:???
俺はPerl出身なんだけど、普通、ファイルオープンするだけでも
やっぱそこまでファイルの存在の確実性を意識しないとダメ?
if(($IN = @fopen($file,'r+')) < 0)
これじゃダメ?

あと、書き込みの時は、物理的ロック(自作ロック)して、
ファイルオープンしてflockってしてるんだけど、これでもやっぱ不十分?
物理的ロックってのはロック用ファイル作成する方法です。
0471nobodyさん2008/04/24(木) 10:32:12ID:???
おれはデータベース使ってロックする方法を取り入れてる
0472nobodyさん2008/04/24(木) 11:29:16ID:???
データベースのロック機構使いながらファイル使うって、
レインコートを着ながら、傘を差すようなものだな。
頭にウジでも湧いているじゃないだろうか?
■ このスレッドは過去ログ倉庫に格納されています