[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 18:38 / Filesize : 76 KB / Number-of Response : 280
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はID出して書き込みやがれ 83



1 名前:nobodyさん mailto:sage [2009/04/06(月) 04:14:58 ID:???]
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
pc11.2ch.net/test/read.cgi/php/1236532468/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ

251 名前:nobodyさん mailto:sage [2009/04/11(土) 02:28:50 ID:???]
jp2.php.net/manual/ja/function.headers-list.php

252 名前:nobodyさん mailto:sage [2009/04/11(土) 02:36:37 ID:???]
こんな関数あったんですね
ありがとうございました。

253 名前:nobodyさん mailto:sage [2009/04/11(土) 02:55:15 ID:???]
headers_listって自分で設定したヘッダしか取得できないんですね
デフォルトで送る予定のContent-Type: text/http等は
決めうちで取得させるしかないですか?

254 名前:nobodyさん [2009/04/11(土) 05:24:48 ID:HAu5s/9P]
ファイルアップロードに関する質問なのですが、
$_FILEのtypeは信用できないということを聞いたので、
別の方法で取得するようにしたのですが、
その他のname、size、errorなどは信用してもよいのでしょうか?
nameなどはエスケープ処理などする必要がありますか?

よろしくお願いします。

255 名前:nobodyさん mailto:sage [2009/04/11(土) 05:49:24 ID:???]
>>247
それで、hogeは出来てないんだよね?
次はerror_log書いて、PHPのログをチェックかな


256 名前:nobodyさん mailto:sage [2009/04/11(土) 06:24:24 ID:???]
>>245
>1秒とか10秒とかの単位で時間がかかるような規模の試験をした方がいい。
そこまで両者に差が出るとは思えないし
そんな結果が出るまでやるとなるとメモリが足りなくなるでは?
できるならぜひベンチ結果をみてみたいが
というかそんな規模のものPHPじゃ作らないだろうし杞憂な気もするけど・・・

>>248
>count()っていうのはループ中に値が変わる可能性があるわけで
>バグによってループする回数が変わってしまう危険性
だいたいこういう処理は配列を1つずつ取り出す場合に使うのであって
対象の配列数が変わるような処理をやるほうがおかしいのでは?
具体的にどのようなことをするのか検討もつかないけど・・・
バグによってループ回数が変わるっていうのも意味不明

>>183もナイワと批判を書くのではなくて
外におけばPHPではパフォーマンスがあがるという注釈をつければここまで伸びなかった

257 名前:nobodyさん [2009/04/11(土) 06:53:18 ID:/nX8neeQ]
PDOのマニュアルには失敗した時の動作が、書かれてないんですが、
このあたりはドライバ依存ってことなんでしょうか?

jp.php.net/manual/ja/pdo.query.php
jp.php.net/manual/ja/pdo.exec.php

例外で処理するのか戻り値で処理するのか、イマイチわかりません。
とりあえず、今使ってるSQLiteでは戻り値で判断できるみたいですが、ちょっと不安だなぁと言うことで。


258 名前:nobodyさん mailto:sage [2009/04/11(土) 07:09:52 ID:???]
>>257
PDO用の例外があるでしょ
PDOExceptionだったかな

259 名前:nobodyさん mailto:sage [2009/04/11(土) 07:17:24 ID:???]
>>257
失敗しても気にするなよ。諦めたらそこで試合終了だよ



260 名前:nobodyさん mailto:sage [2009/04/11(土) 07:18:25 ID:???]
>>258
でたらめなSQL書いてqueryしても例外でないんですよ。
で、戻り値はfalse

ちなみに環境は PHP5.2.9 とWindows版にバンドル版されてるSQLite です。

261 名前:nobodyさん [2009/04/11(土) 07:22:23 ID:YDJbdlsq]
基本的なことだと思うのですが、
<?php
$a .= "あ"
. "い"
. "う"
;

$b .= "あ";
$b .= "い";
$b .= "う";

echo $a."<br><br>".$b;

?>
の結果は同じになると思いますが、
少し複雑に変数やループ処理を入れたときに、
なぜか$aの方の"あ"の部分が消えてしまいます。
しかし、$b方式だと成功します。
>少し複雑に変数やループ処理を入れたときに、
を詳しく説明したいのですが、コードが長く、
まとめるにも上手く伝える術が見つかりませんでした。
簡易に説明すると、
データを参照して、何ページかを判断して、
リンク付きのページ番号をずらっと表示させるようなプログラム部分になるのですが、
どうして$aではできないのに$bだとできるのか疑問に思いました。
何か心当たりありましたらよろしくお願いします。

262 名前:nobodyさん [2009/04/11(土) 07:25:34 ID:YDJbdlsq]
追記

ループ処理した$aを、
クラスの変数、private $a;
に格納していって、function get_a(){return $this->a;}
の、get_a()メソッドで参照したときに問題が起こりました。

phpは5.2.6です

263 名前:nobodyさん mailto:sage [2009/04/11(土) 08:31:57 ID:???]
コードが長けりゃどこかにうpすればいいのに

264 名前:247 mailto:sage [2009/04/11(土) 09:40:31 ID:???]
>>255
error_logはsystemの戻り値の判定のところに書けばいいの?

265 名前:nobodyさん mailto:sage [2009/04/11(土) 10:03:46 ID:???]
とりあえず、どこまで出来てるのか確認するのが基本
だから、<?phpの後でいいんじゃね?

266 名前:247 mailto:sage [2009/04/11(土) 10:37:14 ID:???]
エラーログを吐き出すようにしてみました。
単体でtest2.phpを動かすとログを出しますが、
メールを介して動かしてもログが吐き出されませんでした。

maillog
(delivered to command: /usr/bin/php /var/www/html/test2.php)

.forward
"| /usr/bin/php /var/www/html/test2.php"

test2.php
#!/usr/bin/php -q
<?php
error_log("テストエラー",0);
system("touch hoge");
?>

267 名前:247 mailto:sage [2009/04/11(土) 10:48:01 ID:???]
forwardでコマンドは実行されているみたいですがtest2.phpは動いていない。
・.forwardの中が間違っている。→/usr/bin/phpは存在する。 
               →/var/www/html/test2.phpでtest2.phpを
                動かせる。
・パーミッションが間違っている。→.forwardを600 test2.phpを705or755

あと考えられる事象はなんでしょうか。

268 名前:nobodyさん mailto:sage [2009/04/11(土) 11:22:57 ID:???]
>>267
ディストリは何使ってるんだ?
それがわかれば同じ環境作ってやってみるけど

269 名前:nobodyさん mailto:sage [2009/04/11(土) 11:32:38 ID:???]
>>267
.forward
"| /usr/bin/php -q /var/www/html/test2.php"
にしてみ



270 名前:nobodyさん mailto:sage [2009/04/11(土) 11:35:55 ID:???]
.forward
"| /var/www/html/test2.php"

うちは、これで動くけど?

271 名前:nobodyさん mailto:sage [2009/04/11(土) 11:59:26 ID:???]
まず
"| touch /tmp/hoge"

ってやってみて処理してるユーザ名を把握してはどうだろう

272 名前:247 mailto:sage [2009/04/11(土) 12:15:02 ID:???]
>>267
ディストリというのは環境という意味でいいのかな?
PHP 5.0.4kfedoracore4です。

>>269
>>270
試してみました。

>>271
suxxxxxxxのユーザーの空ファイルとなりました。
……test2.phpはroot。……まさか。。。


273 名前:261 [2009/04/11(土) 12:15:24 ID:YDJbdlsq]
ありがとうございます
自己解決しました。
実際は、
$a .= "あ"
. $i+1
. "う"
;
という風に、”い”の部分は計算式をいろいろと入れていたのですが、
その計算式を()でくくって
$a .= "あ"
. ($i+1)
. "う"
;
のようにしたら、できました。

274 名前:247 mailto:sage [2009/04/11(土) 12:23:05 ID:???]
>>271

作成されたファイルhoge
-rw------- 1 suXXXXXXX suXXXXXX 0 4月 11 08:36 hoge
.forward
-rw------- 1 suXXXXXXX suXXXXXXX 20 4月 11 08:35 .forward
test2.php
-rwx---r-x 1 root root 112 4月 11 08:02 test2.php

ごく。

275 名前:nobodyさん [2009/04/11(土) 12:35:09 ID:jPW674z3]
グローバル変数はまったく使わないほうがいいのでしょうか?

276 名前:nobodyさん mailto:sage [2009/04/11(土) 12:43:26 ID:???]
うん
スーパーグローバルは使うけど

277 名前:nobodyさん mailto:sage [2009/04/11(土) 13:12:41 ID:???]
スーパーグローバルは便利だが、テストしにくくなる。
モジュールごと、クラスごとにテストを書かないといけないような、ややっこしいコードを作る時は避けた方がいい。

グローバル変数は使うべきではない、とされている。
これは、グローバル変数はどこでどう値が変えられるか分からないのが最大の理由。
ある時点でグローバルに何が入っているかは、プログラムの最初から最後まで全部読まないと分からない。
不具合発生時に原因を特定しづらいし、機能追加時などにどの時点でどの変数がどうなってるか分かりづらくなる。

いっぽう、一時変数は、その関数の中で生成され、その関数が終わったら消えるので、その関数の中だけ見れば値が分かる。
グローバルに依存しない関数は、同じ引数を渡せば同じ結果が常に返って来る。
プログラムのどこで呼ばれても(引数が同じならば)同じ結果が返る事が保証されているので、バグの原因を探しやすい。

278 名前:247 mailto:sage [2009/04/11(土) 14:11:26 ID:???]
ディレクトリィのパーミッションを777に変えてたら
test2.phpまで届いてログが出るようになりました。
ですが、system("touch hoge")が実行されず
まだ空ファイルが作られない状態です。


279 名前:nobodyさん mailto:sage [2009/04/11(土) 14:16:55 ID:???]
file_put_contents("/tmp/hoge.txt", realpath("."));を書いてみて、
カレントディレクトリを把握してはどうだろう。そしたらパーミッションを確認してと・・








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<76KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef