【PHP】質問スレッドpart23【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/10/05 17:36:38ID:???・新規質問の方は上げてください。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
0185nobodyさん
04/10/08 22:48:39ID:???危うく同じ過ちを犯すとこだったよ <-- if ($month == 10) と書こうとしてた
>>177
とりあえず、"Y/m/j"の場合は、桁数が可変なのでこれを固定長にする。
その前に日付フォーマット文字の(j)は"分"なんだけど、比較したいのは"日"(d) なんじゃないかな?
0186185
04/10/08 22:55:59ID:???> 日付フォーマット文字の(j)は"分"
ごめん、勘違いしてた.
> j ... 日。先頭にゼロをつけない。1 から 31
> d ... 日。二桁の数字(先頭にゼロがつく場合も)01 から 31
0188nobodyさん
04/10/09 00:02:04ID:???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:???0192nobodyさん
04/10/09 00:50:51ID:???0193nobodyさん
04/10/09 01:42:07ID:???0195nobodyさん
04/10/09 01:55:11ID:???0198nobodyさん
04/10/09 02:24:49ID:???0199nobodyさん
04/10/09 03:50:28ID:???0200199
04/10/09 03:52:38ID:???0201nobodyさん
04/10/09 05:23:42ID:???4のスタイルで書いた方が面倒くさくなくていいかも。
0202nobodyさん
04/10/09 05:33:48ID:???にもたせないといけなかったりオブジェクトは必ず変数にしまう必要があったり等々で
4のオブジェクトはめんどい。んでE_STRICTでとんでもないことに。
もちろん自分で使う分にはいいんだけど。
0203nobodyさん
04/10/09 06:26:47ID:Iitzl1Oaapache2.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:KzxQhnSEfunction hoge($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k) {
処理;
}
みたいな引数が多い自作関数てやめたほうがいいですか?
なんかごちゃごちゃして分かりにくいきがするのですが。
皆さんは自作関数の引数はどれくらい持たせるのでしょうか?
0206nobodyさん
04/10/09 12:38:46ID:JKfj4SS6てか、何故にそんなに引数いるねん。
多分どっか無駄があると思うで。
0207204
04/10/09 12:44:30ID:???>>206
204の例はちょっと極端でした・・・
今までは引数が2,3こくらいしか扱ったことが無くて、
今回いきなり引数が6つくらいあるのです。
だからあまり多い引数の関数に慣れていないというか。
引数6つって普通でしょうか?
0209nobodyさん
04/10/09 12:49:41ID:???なんだかすごい響きが間抜けな気がするんだが。ホゲ!
0210nobodyさん
04/10/09 13:19:41ID:???0211nobodyさん
04/10/09 14:22:32ID:???6つ全部が本当に必要なパラメータなら引数にとるしかない。
しかし引数が多い場合は大抵、関数の設計に問題がある。
関数の行数が長すぎたり、ひとつの関数のなかで複数の目的を
果たそうとしていたり、引数のフラグ値によって処理を切り替え
たりしていたら、危険信号。
少し古い本だが、「CODE COMPLETE」には引数はおおむね7個
以下に抑えるべきだと書いてある。
0212nobodyさん
04/10/09 14:30:53ID:???連想配列やデフォ値の設定をうまく使ったほうがいいんじゃないかい?
function rect($options)
{
.....
}
$options = array(
'color'=>'blue',
'width'=>60,
'height'=>100,
);
rect($options);
0213nobodyさん
04/10/09 14:39:11ID:80FyrwRsいつも最初悩むんです。
設定ファイルをどこに置くとか、設定ファイルやライブラリへのパスは相対パスにするか
絶対パスにするかとか include_path にいれちゃうとか。
smartyのテンプレートをどこに置くとか、compile_dir をどこにするとか。
レンタルサーバーで 全部public_htmlの中にいれなくてはいけなかったりとか
いろいろ環境によって違うので悩みます。
漏れはこうしてるぜ!ってのあったら教えてください。
0214203
04/10/09 14:57:11ID:Iitzl1Oa0215nobodyさん
04/10/09 15:04:30ID:WliLpyVqこんな感じのPHPないでしょうか
0216nobodyさん
04/10/09 15:17:04ID:???>>188
>>213
PHPでなくてもいいからフレームワーク弄ってみたら。
ドキュメントルート下に全てを置くような制約があるなら、
もう全て諦めて適当においても良いくらいの状況。
0217nobodyさん
04/10/09 15:31:59ID:???0218nobodyさん
04/10/09 17:16:40ID:???0219nobodyさん
04/10/09 17:22:33ID:???0220nobodyさん
04/10/09 17:25:51ID:???レクチャーしてほしいんだが・・・
0223nobodyさん
04/10/09 18:17:17ID:???http://www.php.net/manual/ja/language.references.php
> これはCポインタのようなものではなく ...
0226nobodyさん
04/10/09 19:49:02ID:???要するに、Cのポインタは ポインタ側にその構造(intなのかcharなのか等)を保持しているけど
PHPの参照(リファレンス)はその情報すらもヒープかそれに相当する部分にあり
参照に使う変数はもとの変数やオブジェクトのエイリアスとしてしか機能しない
ということね
0227nobodyさん
04/10/09 20:17:56ID:???いちいちfopenして書いたりするのと
system("echo $hoge >> file"); とか書いちゃうのと
どっちがダサい?
0228nobodyさん
04/10/09 21:47:59ID:???> Cのポインタは ポインタ側にその構造(intなのかcharなのか等)を保持している
してねーよ。Cのポインタはただのアドレス値。
型はコンパイラが知ってるだけ。
> 参照に使う変数はもとの変数やオブジェクトのエイリアス
シンボルテーブルのエイリアスって書いてあるから
変数の別名を作れるだけでヒープ上のオブジェクトの参照は作れないだろ。
0229nobodyさん
04/10/09 22:09:46ID:???>型はコンパイラが知ってるだけ
わかってるよ。便宜上そう書いただけ。
インクリメント等の挙動はポインタ側で決定されるでしょ。
0230nobodyさん
04/10/09 22:32:30ID:???http://drtykjsrt.ifdef.jp/ncndkdjany.html
0231nobodyさん
04/10/09 22:33:31ID:???PHPスレだから、Cのコンパイラの実装方法なんてどうでもいいよ。
ポインタ型がインクリメントを適切に扱えればCを使う人にはそれ以上気にする必要が無い。
同様にPHPを使う人は、PHPにポインタが無いことと
ポインタ型の概念を持ち込むことは無意味だということを知っていさえすれば良い。
0233nobodyさん
04/10/09 23:26:42ID:???hoge&fuga文化って何ですか?
検索してもサンプルの山に埋もれて出典が発見できませんでした
0234nobodyさん
04/10/09 23:30:28ID:???このページが参考になるかも知れません。
ほげを考えるページ
http://kmaebashi.com/programmer/hoge.html
0235nobodyさん
04/10/09 23:32:43ID:???0236nobodyさん
04/10/09 23:33:11ID:???ありがとうございました。
まさかとは思っていましたが「ほげ〜」のほげだったとは…
0237nobodyさん
04/10/10 01:31:38ID:???0238nobodyさん
04/10/10 02:34:08ID:???0239にゃんこ
04/10/10 02:34:10ID:DhJ+i6pZちょっと探しもの中です。
テキストカウンターで昨日・今日・合計が表示されるやつで
ちょっとやそっとじゃ、飛ばないカウンターを探しています。
バックアップ機能がついてると、さらに嬉しいのですが・・・
残念ながら、
ttp://php.s3.to/
さんの昨日今日カウンターは、すぐに飛びました。。。。 (ToT)
アクセス多くても、あんまり飛ばないよ!っていうのを知ってる方、
ぜひ教えてください。宜しくお願い致します。
0242nobodyさん
04/10/10 03:01:29ID:???【PHP】質問スレッド Part14
http://pc2.2ch.net/test/read.cgi/php/1076163015/401-
0243nobodyさん
04/10/10 08:00:23ID:6dJYwntE無限数を表現する記号かなんかってありますか?
$hoge=200;
if($a==$b){
$hoge=∞; ←ココ(無限大マーク)
}
while($hoge > 100){
//処理
}
みたいな感じで書きたいんです。
それがあれば簡単に修正できるんですが…。
ちなみに単純に、
while($hoge > 100 || $a==$b)
って書き方したら「あるいは$a==$b」の部分は無視されて、
最初の「$hoge > 100 」の部分がfalseになった時点でループが終了してしまいました。
while文ってそーゆーもんなんですね…。
0244nobodyさん
04/10/10 08:00:46ID:iO0fDOFWこの(B)って、自分で破棄しなくていいんでしょうか?
メモリーリークの原因になったりはしませんよね?
0245243
04/10/10 08:05:55ID:6dJYwntEすいません。
0248nobodyさん
04/10/10 19:04:14ID:TR7Uhe7OPHP Accelerator v1.3.3r2
MEMORY:160MB
上記の環境で使用しているのですが、apacheのログに時々次のようなメッセージが記録されます。
[warn-phpa] No mempool 2 memory (pid xxxx)
[notice-phpa] shm cache temporarily disabled (pid xxxx)
'phpa_cache_admin -mv'を実行すると'cache disabled'と表示されるため、
毎回手動でキャッシュを有効にしているのですが、他に解決方法はあるでしょうか。
0249nobodyさん
04/10/10 20:15:52ID:???while文は関係ない
||演算子は OR 論理演算子
A || B
という式があった場合
Aが真である限り、Bは評価(実行)されない
0250nobodyさん
04/10/10 21:29:41ID:???ん?評価されないのか!
これはまた一つ勉強になった!ありがとう。
ってことは
真 || func()
とかやってもfunc()は実行もされないと解釈していいのかな?
0251nobodyさん
04/10/10 21:32:26ID:???0252nobodyさん
04/10/10 21:39:25ID:???0253249
04/10/10 21:47:04ID:???A || B は AまたはB が真である場合に真となる
左辺値から順に評価を行い、結果が真であった時点で
論理演算の結果を真として、その右辺値以降の評価は行わない
(問1)
$a = 0;
if ($a == 0 || ++$a == 1) ++$a;
echo $a;
(問2)
$a = 0;
while ($a < 4 || $a % 2 == 0) ++$a;
echo $a;
練習問題でもやって覚えんさい
適当な問題ですまんけど
0255250
04/10/10 22:19:55ID:???ってかそんなことも考えずに使ってました orz
>>253,254
分かりやすい解説&ヒントありがたいです。
0256248
04/10/10 23:15:25ID:???デナオシテキマス
0257nobodyさん
04/10/10 23:57:46ID:???てか、それだけだとPHPの問題かどうかすらも分からんです。
OSのヴァージョンから洗いなおしたほうが良いのではないっすかね?
メッセージからしてアロケートエラーの類ではないかと思えますし。
0258nobodyさん
04/10/11 00:01:29ID:???0259nobodyさん
04/10/11 02:43:49ID:???Smarty使えば?
http://smarty.php.net/
日本語マニュアルあるから、安心しる!
0260nobodyさん
04/10/11 04:42:24ID:???0261
04/10/11 04:42:47ID:CqR/mj9nローカルフォルダのイメージフォルダに画像は保存されている
のですが、 x印になります。
どの画像掲示板スクリプトを使っても、そういう症状になります。
ちなみに、PNG画像カウンタなどは正常に数字画像が表示されます。
CGIスクリプトのイメージの設定は以下のようにしました。
$ImgUrl = "http://localhost/cgi-bin/clip/img/";
それと、直接画像にアクセスしようと以下のURLを入力したの
ですが、Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
と出ます。
http://localhost/cgi-bin/clip/img/4.png
使用ソフトは、Apache/2.0.52 PHP/4.3.9 ActivePerl-5.8.4.810
です。
httpd.confかphp.iniが問題だと思うのですが、アパッチかPerlの設定のどこを直せばよろしいでしょうか?
教えてください。
0263
04/10/11 05:16:21ID:CqR/mj9n自宅のパソコンのローカルホストのURLです。
インターネット用のURLではありませんで、何の汎用性もありません。
0264nobodyさん
04/10/11 05:38:49ID:???http://acorn.zive.net/~oyaji/faq/apache_cgi5.htm
0265nobodyさん
04/10/11 05:40:20ID:???>>261
症状からして板違い
原因が何か分かってりゃ該当する板(スレ)へたどり着けると思うが、
それすら出来ないならもっと基本的なところから始めたほうがいい
↓
http://www.google.co.jp/
0268nobodyさん
04/10/11 06:00:16ID:???0269nobodyさん
04/10/11 06:45:52ID:CqR/mj9nありがとうございます。
リンク先の3番目の方法を試しましたがうまくいきません。
<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
AddHandler image/gif .gif
AddHandler image/jpeg .jpeg .jpg .jpe
AddHandler image/png .png
</Directory>
どうしてでしょうか?
0271269
04/10/11 07:29:54ID:CqR/mj9nURLも変更しましたがダメでした。
$img_dir_url='http://localhost/img-box/';
PHPスクリプトはちゃんと画像が投稿、表示ができるのになぜでしょうか?
0272269
04/10/11 07:58:55ID:CqR/mj9nhttp://moelove.sytes.net/cgi-bin/clip/clip.cgi
pngアクセスカウンタはログもちゃんと動くのですが、スクリプトと
アパッチなどの相性が悪いのでしょうか?
いろんなサイトの画像掲示板を使っても画像が表示されませんでした。
http://moelove.sytes.net/cgi-bin/pngcntr/pngcntr.cgi?logfile
0273nobodyさん
04/10/11 08:31:01ID:???画像だけにアクセスしてもInternal Server Errorがでてるよ。
http://moelove.sytes.net/cgi-bin/clip/img/soon.gif
あとソースみたらさ、
http://localhost/って画像のパス指定してるから、外部から
ローカル参照させて見えるわけない。
相対パスで指定するとかしないと。
0274273
04/10/11 08:31:45ID:???<dd>
<p><img src="http://localhost/cgi-bin/clip/img/soon.gif"><p>
<font color="">test</font><br><br clear=all>
<dt><hr>[<b>2</b>] <font color="#008040"><b>テスト</b></font> 投稿者:<b>ななし</b> 投稿日:2004/10/11(Mon) 04:41 [<a href="./clip.cgi?res=2">返信</a>] <br><br>
<dd>
0275nobodyさん
04/10/11 08:39:00ID:???027745
04/10/11 08:47:01ID:???だから、自宅ではそれでいいのです。
CGIをネットで見せる時は、ドメインサーバによってttp://localhostが
ttp://moelove.sytes.netに自動変換されるのです。
0279nobodyさん
04/10/11 08:49:36ID:???028145
04/10/11 09:06:51ID:???でも、画像を直リンしてもcgi-binディレクトリの下では
ローカルでもネット上でも見れないのです。
http://moelove.sytes.net/cgi-bin/clip/img/soon.gif
localhostディレクトリに直接置けば見れますが、
アパッチのhttpd.confでcgi-binディレクトリ以下で
CGIが動くようになってますので、localhostディレクトリ
に直にフォルダを置いて、下のようにCGIの設定をしても、
$img_dir = '/localhost/img-box';
$img_url ='/localhost/img-box';
HTMLを吐き出す時に、
http://localhost/cgi-bin/img-box/img20041010232143.jpg
のように、cgi-bin/が余計に付いてきます。
0282nobodyさん
04/10/11 09:11:50ID:???PHPがCGIでサーバにインストールされているときは
モジュールの時と同様にPEARがつかえますか?
0285nobodyさん
04/10/11 09:18:09ID:???とりあえず directry 指定は最後にスラッシュ入れた方がいいとして、
リスタートしてないとかそういう話じゃないよな?
■ このスレッドは過去ログ倉庫に格納されています