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

【PHP】質問スレッドpart23【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/10/05 17:36:38ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4
0136nobodyさん04/10/08 01:15:57ID:???
さらに、君が些細な質問にすら簡潔な回答ができないとすると、
それは君が実装方法を丸暗記しているだけで概念も含めた総論として
その解決方法を理解できていないからではないかね?
0137nobodyさん04/10/08 01:18:56ID:???
各種MLを拝見していると常に感じることだが、
この世界には>>136で挙げたような「なんちゃって習得者」がいかに多いことか。
いいかげんPGはコーディングできる技能を"特別な技能"だとする思い上がりを捨てるべきだ。
0138nobodyさん04/10/08 01:20:10ID:h9hTVebP
つーかさ、トリップつけてくんない?
0139nobodyさん04/10/08 01:20:57ID:???
自分でいうのも何だが、PG・SEなんてものは事務員に毛が生えた程度の職業だと思う。
少なくとも俺は自分のことを"エンジニア"とは称さない。
0140nobodyさん04/10/08 01:23:57ID:???
まあ理系の就職相談の指導者が生徒に将来なるなとまず言う職業は
SEだからね。
0141nobodyさん04/10/08 02:20:58ID:???
>137
それは同意だが、マニュアル嫁はとても良い回答だと思うよ。
俺は家電のマニュアルもちゃんと読む。、
0142nobodyさん04/10/08 03:12:11ID:Gf9YwG4z
phpのコーディングをしてるときは「完璧なインデント!」と思うが、
いざ出力されたhtmlを見るとげんなりする。
みなさんどうしてますか?
0143nobodyさん04/10/08 03:14:19ID:???
意味わかんね
HTMLのインデント?
0144nobodyさん04/10/08 03:22:19ID:???
出力されたhtmlのソースのインデント。
014514204/10/08 03:22:43ID:???
↑142です
0146nobodyさん04/10/08 03:23:16ID:???
インデントするようにコーディングすればいいじゃん。
014714204/10/08 03:26:59ID:???
…それだとphpのコーディング時に読みづらくないですか?
0148nobodyさん04/10/08 03:33:34ID:???
根本的に>>142は勘違いしてる気がする
0149nobodyさん04/10/08 03:35:38ID:???
>>142
出力されるhtml(と解釈されるテキスト)には、
インデントはおろか改行すら入れないようにしている。
どうせデバッグの時しか見ない、転送量の削減等の理由で

よく動的に生成されるページでコメントとか入っているのがあるが
あれはデザイナ向けか?
0150nobodyさん04/10/08 03:36:20ID:???
そもそも、どういう書き方してるんだよ。
015114204/10/08 03:38:21ID:???
!!
デバッグ終わったら整形してうpすりゃいいってことか。
何もそのまま使うことはないのか…おれの馬鹿
0152nobodyさん04/10/08 03:51:51ID:???
日本語の検索で詰ってる
調べてみたらmb_を使えばいいと出てるが、
設定しなきゃいけないらしい

指示通り設定したら、こんどは何か足りないと注意された。
分かりにくすぎだろ〜これ・・・・
0153nobodyさん04/10/08 03:53:40ID:???
いや、く全国100万人のPHPデベロッパーは
ちゃんと設定できてるよ
0154nobodyさん04/10/08 03:58:39ID:???
さすがに馬鹿のたまり場になったのでスレを分けよう。
質問スレが隔離効果を狙って立てられているのは知っているつもりだが、
ごく普通のPHPの疑問を解決するスレが欲しいユーザはきっと漏れだけじゃないはず。
そこで問題になるのがスレタイなのだが。

聞いてばっかりになりがちな「質問スレ」というのは止めにして、
お互い問題を提出して有益な情報を出し合えるようなものにしたいところ。
言葉にするとしゃらくさいものに思えるかもしれないが、そういうものが必要だ。

しかしCommonGatewayInterfaceスレのように廃墟になるのはごめんだし、
PHPト学会スレじゃなんのことかさっぱりだ。何かハッとするようなブレイクスルーを
持っている人はいないかい。
0155nobodyさん04/10/08 04:03:27ID:???
もうちょっと暖かく見守ってくれ
回答者がスレのレベルを決めてどうするんだ
最終的には難しい質問しか書けなくなって、誰も答えられない
自慢大会みたいなスレにならない?

---------------
まぁ初心者スレがないから、ココに書いてるのもあるけど。
0156nobodyさん04/10/08 04:17:30ID:???
> 最終的には難しい質問しか書けなくなって、誰も答えられない
> 自慢大会みたいなスレにならない

初心者スレと別れていたころがあるが、そうはならなかった。
なぜ今後そうなると考えているのか理由もかいてくれないと何とも判断のしようがない。
このスレッドはあっていいんだ。"と'の違いや=&、&$が何か、「設定ができない」とだけ
書いてあって救いようの無いレスを打ち合うスレがあるのは否定しない。

けれども最低限マニュアルを読み、テストをする姿勢を要求するスレッドがあっても
いいんじゃないだろうか。その上で自己解決困難な問題について議論してみたら、
有意義な結果が得られることにならないだろうか。別にソースハックを当然のように
要求するスレッドを作りたいわけではない。

読んでくれなかったようだが、「ごく普通のPHPの疑問を解決するスレ」が一本あって
いいんじゃなかろうか、という程度の話だ。大げさに考えることは無い。
0157nobodyさん04/10/08 04:26:15ID:???
PHP質問スレ自体は今後ますます必要になるだろうな。
調べずに聞いてもいい・簡単なことを聞くのは恥じゃない
となったあたりから、うんざりする質問が増えてきて
スキルのある人は出て行ってしまった感がある。
汎用的なスレや板ほど、何でも書けるせいかダメになりやすい。
あまり伸びず情報もさして出てこないような個別スレのほうが
まともなまま生き残る。どっかで分けなきゃいけない気もするね。
0158nobodyさん04/10/08 04:30:58ID:???
以前、スレを初質とその他に分けたけど
質問者どころか回答者も使い分けれないって事で
また合体したじゃん。

放置とかスルーとかできるほど民度が高くないから
分けても無駄無駄。
0159nobodyさん04/10/08 04:31:38ID:???
>>126
変数以外にも、エスケープシーケンスも展開されない。

>>124
使い分けに関しては、変数などの展開が必要ならば「"」不要なら「'」
文字列リテラルに「$"\」などの記号を多く含む場合は「'」程度かな。
必然的に>>130に近い使い分けになると思う。

>>142
テンプレートを使ってるよ。
0160nobodyさん04/10/08 04:32:28ID:???
>>155
初心者スレもあったけど、初心者スレとPHP質問スレを
分けて使ってくれないんで無駄つーことで合体したんじゃなかったっけ
マニュアル読まない>>1読まないエラー読まないってな人は初心者スレを作ってあげても
住み分けてくれない罠
0161nobodyさん04/10/08 04:33:52ID:???
>>158
質問スレと初心者の質問スレを分けるんじゃダメだ話でしょ >>154

0162nobodyさん04/10/08 04:35:56ID:???
>>126
変数以外にも、エスケープシーケンスも展開されない。

どういうことよ
'\''がパースされないって認識?
0163nobodyさん04/10/08 04:36:48ID:???
設定変えてApache再始動したら、mb対応した。
またバカなこと書いたと反省した(・∀・)
016415704/10/08 04:39:41ID:???
質問スレもう一個立てるってのは分けることになら
んでそ。そういうことじゃなくてさ。「質問」のためのス
レッドじゃ上手くいかないから別用途でってことね。
レベル分け無理ってのは同意。
0165nobodyさん04/10/08 04:42:25ID:???
>>162
エスケープシーケンスつーとあれだけど、'\n'とかね。'/\n/'はPHPが賢いので有効。
01669804/10/08 09:28:37ID:???
棲み分けに関して
何回かこの板で質問させてもらった98ですが、
スクリプト改造スレみたいに【希望するレスの形】別なんてどうでしょう?
自分がつまずきレベルを考えたら3種類あって
【1、マニュアルの該当しそうな所が予想つく→マニュアル読む】
【2、マニュアルのどこに該当するのか見当つかない→キーワードでぐぐる】
【3、なにでぐぐっていいのかすらわからない】
くらいに大別できるかなと思うので3番目は論外にせよ
ヒントをくれるスレ、マニュアルのどこそこに該当するからそこ嫁、なんて
2番目の状態でぐぐっても何もなかった時に質問できるスレがあったらいいなぁ
なんて思います
長文スマソ
0167nobodyさん04/10/08 09:31:09ID:wO90jo1V
$log = fopen(log.dat,"r+");
set_file_buffer($log, 0);
flock($log, LOCK_EX);
$kiroku = file(log.dat);
処理
rewind($log);
ftruncate($log, 0);
fputs($log, 処理の結果);
flock($log, LOCK_UN);
fclose($log);

排他ロックはこれでOK?
0168nobodyさん04/10/08 09:45:19ID:???
>>167
flock() に失敗したときの処理はどうなってるの?
016916704/10/08 10:09:33ID:???
>>168
サーバーをリブートさせてます。
017016704/10/08 10:27:11ID:???
if (!flock($log, LOCK_EX)){ echo"ロックに失敗しました"; }
0171nobodyさん04/10/08 13:21:18ID:???
凄く遅レスだけど、動的ページでhtmlにコメント入れてあるのは
自動巡回&切り出しソフトとかで切り出すのに重宝するよね。

>>167,170
if (!flock($log, LOCK_EX)){ echo"ロックに失敗しました"; }
else {処理;}
とかいう突っ込みをしてみる。
0172nobodyさん04/10/08 13:45:17ID:???
safe modeがオンのときに画像アップロード等の
phpアプリを実行することはできますか?
0173nobodyさん04/10/08 13:52:52ID:???
試してどうだったんだ。
0174nobodyさん04/10/08 13:55:25ID:???
>>172
環境とコードによるけど、セーフモードつったって只のIDチェックでしょ?
http://jp.php.net/manual/ja/features.safe-mode.php#ini.sect.safe-mode
0175nobodyさん04/10/08 17:43:50ID:???
馬鹿がいる。
017615904/10/08 18:11:51ID:???
>>162
'/''のエスケープは有効だったね。
>>152 は、(マニュアル通り) *特殊文字の*エスケープシーケンスに訂正します。

>>165 フォローthx u
0177nobodyさん04/10/08 19:08:16ID:EsMqKh23
日付を使って条件判断したいのですが
以下のようにやってもうまくいきません。
例えば10月の分は全部syori2に行き11月の分はsyori1になります。
どっか間違っていますでしょうか?

if(date("Y/m/j")<date("Y/m/j",mktime(0,0,0,$month,$day,$year))){
syori1
}else{
syori2
}
0178nobodyさん04/10/08 19:13:40ID:???
>>177
これならへたれな俺でも回答できる
UNIXタイムスタンプで比較すれ
0179nobodyさん04/10/08 21:13:17ID:???
>>177
http://jp2.php.net/manual/ja/function.strtotime.php
0180nobodyさん04/10/08 21:17:26ID:???
えっ?それは・・・
0181nobodyさん04/10/08 21:21:51ID:???
>>163
mb関数はバグがあるからちゃんと返却値を確認しつつ使う必要があるよ。
例えば、mb_convert_kana()などは、全角スペース→半角スペースの変換ができないから
preg_replace()なんかで受ける必要があったりとか。

>>177
なぜ数値として比較したいのに「/」を入れて文字列にしてるのかと小一時間(w
018217904/10/08 21:24:55ID:???
ごめん、質問をよく読まないで書いた。
よく読んだら
【10月の分は全部syori2に行き11月の分はsyori1になります。】
これが望んでいる動作なのか望まないのに
そのように動作しているのかすらわからなかったorz
0183nobodyさん04/10/08 22:42:04ID:???
プログラミングではなくスクリプトそのものをフリーで探しているのですが、
その場合の質問もこちらでいいのでしょうか?

ギャラリー系のPHPスクリプトでPHP4.0.6/DB無し/ImageMagik・NetPBT(?)無しのサーバーで
ブラウザからUpload出来、自動リサイズ可能で各画像/アルバムのDiscriptionの編集が効くようなスクリプトはご存じないでしょうか?
注文が多くてスミマセン。
018418304/10/08 22:42:32ID:Us1p5CHj
連続カキコすみません。
ageるのを忘れていました。
0185nobodyさん04/10/08 22:48:39ID:???
>>182
危うく同じ過ちを犯すとこだったよ <-- if ($month == 10) と書こうとしてた

>>177
とりあえず、"Y/m/j"の場合は、桁数が可変なのでこれを固定長にする。
その前に日付フォーマット文字の(j)は"分"なんだけど、比較したいのは"日"(d) なんじゃないかな?
018618504/10/08 22:55:59ID:???
>>185 自己レス
> 日付フォーマット文字の(j)は"分"
ごめん、勘違いしてた.

> j ... 日。先頭にゼロをつけない。1 から 31
> d ... 日。二桁の数字(先頭にゼロがつく場合も)01 から 31
0187nobodyさん04/10/08 23:02:06ID:???
>>183-184
あースレ違いだから
0188nobodyさん04/10/09 00:02:04ID:???
>>183
Web製作板のほうにCGI探しスレがあるんでそっちで。こっちは自分で作る板。
向こうアホが張り付いて荒らしてるんで心して行った方がいいよ。
0189カポコン04/10/09 00:36:55ID:???
よぉ、ネタが途切れてるみたいなんで振っとくよ。
PHPではポインタの中身は見れないんだよな〜。
見たいなー見たいなー、見れる方法あればきぼんなんだな〜。
<?php
$a = 0xff;
$b =& $a;
echo(printf("%p",$b));
?>
とかじゃー、出ないし・・・orz。
0190nobodyさん04/10/09 00:44:57ID:???
まだ参照をポインタだと勘違いしてるのか。
期待してるんだからもっと勉強しろよ。
0191nobodyさん04/10/09 00:47:07ID:???
ポインタアドレスをPHPで使う必要が皆無なので出来ません
0192nobodyさん04/10/09 00:50:51ID:???
もうちっと勉強できたらバカボンを名乗るのを認めてやろうぜ
0193nobodyさん04/10/09 01:42:07ID:???
PEARで使えるものって何かあります?
0194nobodyさん04/10/09 01:47:43ID:???
>>193
意味不明
0195nobodyさん04/10/09 01:55:11ID:???
素人は引っ込んでろ
0196nobodyさん04/10/09 02:01:22ID:???
>>193
引っ込んでろってさ。
0197nobodyさん04/10/09 02:02:07ID:???
>>189
引っ込んでろってさ。
0198nobodyさん04/10/09 02:24:49ID:???
自分で作りたくなくて、便利でオススメなモノだ
0199nobodyさん04/10/09 03:50:28ID:???
板違い
020019904/10/09 03:52:38ID:???
誤爆った
0201nobodyさん04/10/09 05:23:42ID:???
php4のクラスって5でもほとんどそのまま使えるんだね。
4のスタイルで書いた方が面倒くさくなくていいかも。
0202nobodyさん04/10/09 05:33:48ID:???
デリファレンスしたり@accessに気をつかったりスタティックなプロパティはメソッド
にもたせないといけなかったりオブジェクトは必ず変数にしまう必要があったり等々で
4のオブジェクトはめんどい。んでE_STRICTでとんでもないことに。
もちろん自分で使う分にはいいんだけど。
0203nobodyさん04/10/09 06:26:47ID:Iitzl1Oa
redhat9
apache2.0.52

php5.0.2をインストールしてapacheを再起動すると下記のようなエラーがでますが、
何のバージョンをあげればいいのでしょうか?
mod_php.cで20020628のファイルなんて見あたらないのですが・・・

-----------------------
# /usr/sbin/httpd -k restart
>httpd: module "/home2/Download/php-5.0.2/sapi/apache2handler/mod_php5.c" is not compatible with this version of Apache (found 200
>20628, need 20020903).
>Please contact the vendor for the correct version.
0204nobodyさん04/10/09 12:32:31ID:KzxQhnSE
質問です。

function hoge($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k) {
処理;
}

みたいな引数が多い自作関数てやめたほうがいいですか?
なんかごちゃごちゃして分かりにくいきがするのですが。
皆さんは自作関数の引数はどれくらい持たせるのでしょうか?
0205nobodyさん04/10/09 12:37:31ID:???
>>204
配列渡せば?
0206nobodyさん04/10/09 12:38:46ID:JKfj4SS6
処理によりけり。
てか、何故にそんなに引数いるねん。
多分どっか無駄があると思うで。
020720404/10/09 12:44:30ID:???
>>205
>>206

204の例はちょっと極端でした・・・
今までは引数が2,3こくらいしか扱ったことが無くて、
今回いきなり引数が6つくらいあるのです。
だからあまり多い引数の関数に慣れていないというか。
引数6つって普通でしょうか?
0208nobodyさん04/10/09 12:48:54ID:???
>>207
>>204がいいこと言った。
0209nobodyさん04/10/09 12:49:41ID:???
hogeってなんなんだろうか?
なんだかすごい響きが間抜けな気がするんだが。ホゲ!
0210nobodyさん04/10/09 13:19:41ID:???
Huge Over Gigantic Expletive
0211nobodyさん04/10/09 14:22:32ID:???
>>207
6つ全部が本当に必要なパラメータなら引数にとるしかない。
しかし引数が多い場合は大抵、関数の設計に問題がある。

関数の行数が長すぎたり、ひとつの関数のなかで複数の目的を
果たそうとしていたり、引数のフラグ値によって処理を切り替え
たりしていたら、危険信号。

少し古い本だが、「CODE COMPLETE」には引数はおおむね7個
以下に抑えるべきだと書いてある。
0212nobodyさん04/10/09 14:30:53ID:???
>>204
連想配列やデフォ値の設定をうまく使ったほうがいいんじゃないかい?
function rect($options)
{
.....
}
$options = array(
'color'=>'blue',
'width'=>60,
'height'=>100,
);
rect($options);
0213nobodyさん04/10/09 14:39:11ID:80FyrwRs
php で webアプリを作る時、ディレクトリ構成どうしてますか?
いつも最初悩むんです。

設定ファイルをどこに置くとか、設定ファイルやライブラリへのパスは相対パスにするか
絶対パスにするかとか include_path にいれちゃうとか。
smartyのテンプレートをどこに置くとか、compile_dir をどこにするとか。

レンタルサーバーで 全部public_htmlの中にいれなくてはいけなかったりとか
いろいろ環境によって違うので悩みます。

漏れはこうしてるぜ!ってのあったら教えてください。
021420304/10/09 14:57:11ID:Iitzl1Oa
誰かわかりませんか?
0215nobodyさん04/10/09 15:04:30ID:WliLpyVq
ttp://aavideo.s11.xrea.com/cgi-bin/aadb/select_form.cgi
こんな感じのPHPないでしょうか
0216nobodyさん04/10/09 15:17:04ID:???
>>215
>>188

>>213
PHPでなくてもいいからフレームワーク弄ってみたら。
ドキュメントルート下に全てを置くような制約があるなら、
もう全て諦めて適当においても良いくらいの状況。
0217nobodyさん04/10/09 15:31:59ID:???
P H P
0218nobodyさん04/10/09 17:16:40ID:???
hogeって「なになに」とか「ほにゃらら」という意味だと思ってた…
0219nobodyさん04/10/09 17:22:33ID:???
hoge&fuga文化も知らない輩でも使ってるPHPって・・・・。
0220nobodyさん04/10/09 17:25:51ID:???
PHPの「参照」って、ポインタと思って間違いない?
レクチャーしてほしいんだが・・・
0221nobodyさん04/10/09 17:29:59ID:???
>>220
はぁ・・・
0222nobodyさん04/10/09 17:48:10ID:???
>>220
だめだこりゃ
0223nobodyさん04/10/09 18:17:17ID:???
こういう時こそマニュアルですよ。
http://www.php.net/manual/ja/language.references.php
> これはCポインタのようなものではなく ...
0224nobodyさん04/10/09 18:26:42ID:???
>>203
INSTALLに書いてある通りにインストールしろ
022521304/10/09 18:36:46ID:???
>>216
mojavi でも眺めてみます!
0226nobodyさん04/10/09 19:49:02ID:???
>>223
要するに、Cのポインタは ポインタ側にその構造(intなのかcharなのか等)を保持しているけど
PHPの参照(リファレンス)はその情報すらもヒープかそれに相当する部分にあり
参照に使う変数はもとの変数やオブジェクトのエイリアスとしてしか機能しない
ということね
0227nobodyさん04/10/09 20:17:56ID:???
ファイルにポツポツと出力するとき
いちいちfopenして書いたりするのと
system("echo $hoge >> file"); とか書いちゃうのと
どっちがダサい?
0228nobodyさん04/10/09 21:47:59ID:???
>>226
> Cのポインタは ポインタ側にその構造(intなのかcharなのか等)を保持している

してねーよ。Cのポインタはただのアドレス値。
型はコンパイラが知ってるだけ。


> 参照に使う変数はもとの変数やオブジェクトのエイリアス

シンボルテーブルのエイリアスって書いてあるから
変数の別名を作れるだけでヒープ上のオブジェクトの参照は作れないだろ。
0229nobodyさん04/10/09 22:09:46ID:???
>>228
>型はコンパイラが知ってるだけ
わかってるよ。便宜上そう書いただけ。
インクリメント等の挙動はポインタ側で決定されるでしょ。
0230nobodyさん04/10/09 22:32:30ID:???
http://rtkrtykrtyk.gozaru.jp/mvg6ocqcvfk.html
http://drtykjsrt.ifdef.jp/ncndkdjany.html
0231nobodyさん04/10/09 22:33:31ID:???
荒れる前に言っとくと、
PHPスレだから、Cのコンパイラの実装方法なんてどうでもいいよ。
ポインタ型がインクリメントを適切に扱えればCを使う人にはそれ以上気にする必要が無い。
同様にPHPを使う人は、PHPにポインタが無いことと
ポインタ型の概念を持ち込むことは無意味だということを知っていさえすれば良い。
0232nobodyさん04/10/09 22:36:10ID:???
>>231
オレも実装の方法はどうでもいいと思ってるよ
0233nobodyさん04/10/09 23:26:42ID:???
>219
hoge&fuga文化って何ですか?
検索してもサンプルの山に埋もれて出典が発見できませんでした
0234nobodyさん04/10/09 23:30:28ID:???
>>233
このページが参考になるかも知れません。
ほげを考えるページ
http://kmaebashi.com/programmer/hoge.html
0235nobodyさん04/10/09 23:32:43ID:???
つーかこんなくだんない知識でアンデンティティ保とうとすんなよ
0236nobodyさん04/10/09 23:33:11ID:???
>234
ありがとうございました。
まさかとは思っていましたが「ほげ〜」のほげだったとは…
■ このスレッドは過去ログ倉庫に格納されています