【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
016698
04/10/08 09:28:37ID:???何回かこの板で質問させてもらった98ですが、
スクリプト改造スレみたいに【希望するレスの形】別なんてどうでしょう?
自分がつまずきレベルを考えたら3種類あって
【1、マニュアルの該当しそうな所が予想つく→マニュアル読む】
【2、マニュアルのどこに該当するのか見当つかない→キーワードでぐぐる】
【3、なにでぐぐっていいのかすらわからない】
くらいに大別できるかなと思うので3番目は論外にせよ
ヒントをくれるスレ、マニュアルのどこそこに該当するからそこ嫁、なんて
2番目の状態でぐぐっても何もなかった時に質問できるスレがあったらいいなぁ
なんて思います
長文スマソ
0167nobodyさん
04/10/08 09:31:09ID:wO90jo1Vset_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?
0170167
04/10/08 10:27:11ID:???0171nobodyさん
04/10/08 13:21:18ID:???自動巡回&切り出しソフトとかで切り出すのに重宝するよね。
>>167,170
if (!flock($log, LOCK_EX)){ echo"ロックに失敗しました"; }
else {処理;}
とかいう突っ込みをしてみる。
0172nobodyさん
04/10/08 13:45:17ID:???phpアプリを実行することはできますか?
0173nobodyさん
04/10/08 13:52:52ID:???0174nobodyさん
04/10/08 13:55:25ID:???環境とコードによるけど、セーフモードつったって只のIDチェックでしょ?
http://jp.php.net/manual/ja/features.safe-mode.php#ini.sect.safe-mode
0175nobodyさん
04/10/08 17:43:50ID:???0176159
04/10/08 18:11:51ID:???'/''のエスケープは有効だったね。
>>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
}
0179nobodyさん
04/10/08 21:13:17ID:???http://jp2.php.net/manual/ja/function.strtotime.php
0180nobodyさん
04/10/08 21:17:26ID:???0181nobodyさん
04/10/08 21:21:51ID:???mb関数はバグがあるからちゃんと返却値を確認しつつ使う必要があるよ。
例えば、mb_convert_kana()などは、全角スペース→半角スペースの変換ができないから
preg_replace()なんかで受ける必要があったりとか。
>>177
なぜ数値として比較したいのに「/」を入れて文字列にしてるのかと小一時間(w
0182179
04/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の編集が効くようなスクリプトはご存じないでしょうか?
注文が多くてスミマセン。
0184183
04/10/08 22:42:32ID:Us1p5CHjageるのを忘れていました。
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/
■ このスレッドは過去ログ倉庫に格納されています