トップページ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カテゴリ)の各スレで
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:???
データベースのロック機構使いながらファイル使うって、
レインコートを着ながら、傘を差すようなものだな。
頭にウジでも湧いているじゃないだろうか?
0473nobodyさん2008/04/24(木) 11:33:25ID:???
頭に蛆は湧いていないけど、風呂場に蛆が湧いているよw
04744702008/04/24(木) 11:47:44ID:???
いや、俺も最近はデータベースばっかだけど、
でもファイル使わないといけない時もあるしな。RSSとか。
0475nobodyさん2008/04/24(木) 11:56:29ID:???
>>472
君はいろんなものを作って知識を貯めたほうがいいよ
自分の無知を晒すことになるから
0476nobodyさん2008/04/24(木) 12:09:45ID:???
無知をさらしているのはお前だよw
データベースも実体はファイル。
ファイルを操作するI/Fが違うだけ。

使うばかりじゃなくて、仕組みを理解しないと、応用が効かないよ。
04774702008/04/24(木) 12:27:26ID:???

> if(($IN = @fopen($file,'r+')) < 0)
これじゃまだダメだと思う?
0478nobodyさん2008/04/24(木) 12:34:58ID:???
>>477
う〜ん、なんかごまかしって感じ
0479nobodyさん2008/04/24(木) 13:09:05ID:RVXwLuUy
Wikipediaみたいな
ttp://example.com/KEYWORD
みたいなURLってPHPでどうやるの?
index.php?←消せるの?
0480nobodyさん2008/04/24(木) 13:11:46ID:???
>>479
$_server['path_info']
04814792008/04/24(木) 13:17:47ID:RVXwLuUy
>>480
PATH_INFOって↓みたくなるんじゃないの?
ttp://example.com/index.php/KEYWORD
0482nobodyさん2008/04/24(木) 13:20:33ID:???
それかrewrite
0483nobodyさん2008/04/24(木) 13:30:51ID:???
こういう口の利き方の質問者は教えても感謝をしないから教えなくて良いよ
0484nobodyさん2008/04/24(木) 14:23:25ID:???
>>470
> やっぱそこまでファイルの存在の確実性を意識しないとダメ?
それは要求次第。
単純に読み取りしたい時は調べても無駄だからやらない。
状態が分かってもそれは fopen() を呼んだ時点の状態ではないから。
>>444 が言う「ファイルが存在する場合のみ処理」の場合は
存在が分かればいいのだから file_exists() がより妥当っていうお話でしょう。
質問にまともに答えず別の話にもってく奴が悪いんだけどな。

あと fopen() の返り値はリソース型もしくは論理型の false なので
比較は fopen() !== false または is_resource(fopen()) で。

> ロック用ファイル作成する方法
システムコールのロックが使えない、欠陥がある場合や
mandatory lock したい時は使わる一つの手だね。
0485nobodyさん2008/04/24(木) 14:37:34ID:WKXs89Ye
質問させてください
ヘッダとフッタだけ出力する.PHPに 中身のコンテンツを表示させる.PHPを
includeさせているとします。
このとき、中身のPHPにheader関数でリダイレクトさせる機能はつけられないんでしょうか?
この機能はそれより前に何も出力してないことが条件とありますが、
(親の.phpが)ヘッダを出力してるから無理?
テストしたところ動かないです。 これは上記の理由によるものですか?
0486nobodyさん2008/04/24(木) 14:44:04ID:???
こういう図か
test.phpの中身
フッタ
コンテンツ(ここは外部ファイルをインクルードして表示)
ヘッダ

んでtest.phpではじめの出力でheaderを送信させてリダイレクトさせたいということか?
0487nobodyさん2008/04/24(木) 14:44:23ID:???
質問の仕方としては15点
04884852008/04/24(木) 14:57:52ID:WKXs89Ye
<html>
<header></header>
<body>
<?php
include "nakami.php";//中身を読み込み。この中でリダイレクトさせてる(header()で)
?>
</body>
</html>
って感じです(外側の.php)
こういうやり方だと、リダイレクトしないんです。
04894852008/04/24(木) 15:02:12ID:WKXs89Ye
>>486
どうもです
リダイレクトの関数を設置してるのは、読み込まれている側(コンテンツ部分)の
.phpです
0490nobodyさん2008/04/24(木) 15:05:25ID:???
>>485 yes
0491nobodyさん2008/04/24(木) 15:07:19ID:???
>>488
nakami.phpを読み込んでheader関数使う前にタグが出力されてんじゃん
0492nobodyさん2008/04/24(木) 15:09:14ID:???
>>488
で、なんでリダイレクトする必要があるわけ?
アフィ厨で不正やろうってわけじゃないよな
出力させたいページをそのコンテンツ部分に読み込ませればいいじゃん
04934852008/04/24(木) 15:14:28ID:WKXs89Ye
すみません、沢山の人に答えてもらって感謝してます
結局ムリってことですよね、親のphpに出力されてるから…
この場合はjavascriptを中身の.phpに入れるしかないですよね?

>>492
フォームで、アンケート.php に「トップ.php」「確認.php」「完了.php」を
読み込ませてるんです。(ブラウザに表示されるURLは常にアンケート.php)
完了まで行ったら二重送信防止にリダイレクトさせたくて。。 って事情でした
0494nobodyさん2008/04/24(木) 15:17:33ID:???
ファイルを分けたいのなら

アンケート.phpにいろんなファイルを読み込ませて一つのファイルで処理してるように見せかけたいの?
なんかあなたがやってるのは無駄な処理だな
04954852008/04/24(木) 15:21:36ID:???
>>494
どんなやり方がオススメですか? 良かったら聞かせてください
0496nobodyさん2008/04/24(木) 15:24:59ID:???
id隠れてるのは偽者?
0497nobodyさん2008/04/24(木) 15:26:08ID:???
>>485
ここまでの回答の流れをぶったぎってレス
ob_start 使えば実現できる
0498nobodyさん2008/04/24(木) 15:34:24ID:???
Smarty使えば一発で解決する
04994852008/04/24(木) 15:36:55ID:WKXs89Ye
>>496
僕のことですか? >>495も僕ですよ
本題とずれてきたのでsageたほうがいいかなと思いました
enq_top.php > enq_conf.php > enq_rewrite.php > enq_finish.php と、
トップから完了まで全パターンの.phpを(使いまわせるはずのヘッダやフッタ含めて)
作るのがめんどくさいのでincludeさせたんですが、、 他にどんな良い方法があったんだろうと
気になってます。 smarty使えば、ヘッダやフッタをテンプレートとして効率よく管理できるとは思いますが…

>>497
ありがとうございます 調べてみます
なんだか特殊な機能みたいで難しそうですが、、 ありがとう
05004852008/04/24(木) 15:39:29ID:WKXs89Ye
>>498
あ、やっぱりsmartyですか…
一度勉強し始めて、基礎も出来てないのによしておこうと思ってやめました
またやってみようかなぁ。。 プロはみんな使ってるんでしょうか?>smarty
0501nobodyさん2008/04/24(木) 17:02:09ID:???
ob_*なんてデフォで使えるようになってるだろ
0502nobodyさん2008/04/24(木) 17:57:45ID:???
$url="hoge"; を<a href=hoge>hoge</a>にする楽なやりかたないでしょうか?
0503nobodyさん2008/04/24(木) 18:22:27ID:???
echo "<a href=\"$url\">$url</a>";が面倒ですと?
0504nobodyさん2008/04/24(木) 18:40:44ID:???
こういうときは間違った方向に走るもんじゃないのか。

$str = '$url="hoge"; がいっぱい出てくる $url="hoge"; だらけの文字列';
echo str_replace('$url="hoge";', '<a href=hoge>hoge</a>', $str);
0505nobodyさん2008/04/24(木) 18:45:03ID:???
俺は printf( "<a href=\"%s\">%s</a>", $url, $url ); の人
0506nobodyさん2008/04/24(木) 18:59:23ID:???
メソッドっていうのか
echo linkfy($url);
こうできませんかね。。。
0507nobodyさん2008/04/24(木) 19:01:45ID:???
jibunndekannsuuwotukurebaiijannka
0508nobodyさん2008/04/24(木) 19:01:56ID:???
メソッドは知ってるけど関数は知らないのか?
0509nobodyさん2008/04/24(木) 19:09:35ID:???
ということはVBの人か。
0510nobodyさん2008/04/24(木) 19:15:05ID:???
>>506
http://www.php.net/manual/ja/language.functions.php
ここ読んで function linkfy($arg) 作ればいいよ。
sprintf( "<a href=\"%s\">%s</a>", $arg, $arg) を return するだけの関数。
0511nobodyさん2008/04/24(木) 19:16:46ID:???
なんだこの流れ・・・
0512nobodyさん2008/04/24(木) 19:22:07ID:???
素質ある技術者の技術的な考察とかJP1よりは、のどかでいいよ。
0513nobodyさん2008/04/24(木) 19:26:21ID:???
>>510
キモイ書き方薦めるのやめれ
0514nobodyさん2008/04/24(木) 20:18:10ID:1f8tGK11
このマニュアルってオフラインで使えるダウンロード版はありますか?
http://www.php.net/manual/ja/index.php
0515nobodyさん2008/04/24(木) 20:39:33ID:???
ここから好きなの落として使って

http://www.php.net/download-docs.php

0516nobodyさん2008/04/24(木) 21:15:56ID:mjxa+9jc
本当にくだらない質問で申し訳ございません。

リンク先のa.phpに文法エラーが存在する場合、IE6:500エラー Firefox:syntax error が
表示されます。
上記の場合、IEでsyntax errorを出現させる設定等あるのでしょうか?

どなたかご教示くださいませ。
0517nobodyさん2008/04/24(木) 21:25:59ID:???
IE側の設定だった気がす
0518nobodyさん2008/04/24(木) 21:30:32ID:???
メニューの
[ツール] - [オプション]

[詳細設定]タブ
ブラウズ カテゴリの
 HTTP エラー メッセージを簡易表示する
のチェックを外す

これIE6ね。IE7はワカンネ
05195162008/04/24(木) 21:35:25ID:mjxa+9jc
>>517-518

IE6です。>>518の設定方法を試してみたところ syntax error が表示されました。
本当にありがとうございました。
0520nobodyさん2008/04/24(木) 21:44:51ID:???
どういたしまして。
0521nobodyさん2008/04/24(木) 21:46:13ID:???
>>518
IE7でも同じ設定項目があるyo
0522nobodyさん2008/04/24(木) 22:50:12ID:???
>>518
JP1でも同じ設定項目があるyo
0523nobodyさん2008/04/25(金) 07:00:29ID:???
JP1って流行っているの?
何なの、このJP1、JP1ってレス?
0524nobodyさん2008/04/25(金) 08:22:49ID:???
JP1を売り込む営業さんが数字伸ばすためにここで宣伝してるんだろ
営業へただからここで宣伝してるんだろ
0525nobodyさん2008/04/25(金) 15:18:13ID:ETeE5V7l
PHPからcronにジョブを足したり消したりできませんか?
0526nobodyさん2008/04/25(金) 15:19:24ID:???
>>525
それができたらどうなるかわかりますか
0527nobodyさん2008/04/25(金) 15:31:54ID:???
>526が何を懸念してるのか知らないが、system使えば出来るんじゃ?
やったことねーけど
0528nobodyさん2008/04/25(金) 15:40:10ID:???
>>526
PHPでスケジューラーが作れます
0529nobodyさん2008/04/25(金) 20:54:21ID:???
phpでもperlでも、良いんですが、
フリーの掲示板のcgiを探しています。
条件は
1.英語の掲示板であること。
2.投稿時にCAPTCHA認証すること。
です。
知ってましたら、教えてください。
0530nobodyさん2008/04/25(金) 20:55:42ID:???
>>529
kentにcaptchaがついてた
日本語は自分で英語にすりゃできる
0531nobodyさん2008/04/25(金) 21:06:33ID:???
大文字JPはゆうメイトを思い出すからやめれくれ
0532nobodyさん2008/04/26(土) 00:43:34ID:???
とりあえずPHPエディタというエディタのスタンドアローン版でも使ってみたら?
0533nobodyさん2008/04/26(土) 00:45:30ID:???
>>532
phpspotさん乙
0534nobodyさん2008/04/26(土) 00:50:37ID:???
あれは使えん
0535nobodyさん2008/04/26(土) 01:10:46ID:???
Emacs使ってるけど、ヒアドキュメントがちと書きにくい。
0536nobodyさん2008/04/26(土) 01:52:48ID:???
FlashDevelopは意外と快適。
0537nobodyさん2008/04/26(土) 06:10:19ID:???
JP1、JP1ってもういいよ。
確かに、一流のソフトであることは間違いないし、
色々な公共機関、金融システムで使われているし、
そんなことは周知の事実だと思うよ。
0538nobodyさん2008/04/26(土) 10:59:49ID:???
>>537
ってか、そういうレスしているのが逆に宣伝になっていると思うんだが・・・
0539nobodyさん2008/04/26(土) 11:18:17ID:???
>>538
537はJP1JP1ってうるさい奴だろ
批判するような感じで宣伝してるんだ
0540nobodyさん2008/04/26(土) 12:50:06ID:???
PHPからうまくメールが送れません。
というか、maillogをみると、Fromが変わらないので、localhost.localhostからメールが飛んでしまい
受信先に拒否されてる感じです。

もともと、ZendFramwork使っていたのですが、問題を特定するために
mail("hoge@hoge.jp",'test','body','From: info@hoge.net' . "\r\n");
という最小限のコードで試しました。

php.iniのsendmail_from=なんかもいじってみましたが、Fromがlocalhost.localhostになってしまいます。

他になんか送らなきゃいけないheaderとかあるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています