【PHP】下らねぇ質問はID出して書き込みやがれ 105
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2011/03/17(木) 04:00:34.11ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0921。 ◆oDupeixhZv52
2011/04/27(水) 12:23:36.47ID:???0923nobodyさん
2011/04/27(水) 17:27:46.13ID:1DO68SdUブラウザからアクセスがあったときに
PHPで書かれたバッチファイルをexecで実行しようとすると
Unable to forkとエラーが出てしまいます。
バッチファイルは、別のテキストファイルを読み込もうとしているのですが、
このテキストファイルの権限は777にして/home/hoge/下に
置いてあります。
このテキストファイルのオーナーがhogeだと上記エラーは出ないのですが、
他のユーザがオーナー(例えばfuga)だとエラーが出てしまいます。
また、同じコマンドをcronからapacheユーザで実行すると
上記エラーはでません。
権限が777でもファイルのオーナーが異なることによって
上記エラーが出る場合は、どこに原因があるのでしょうか?
また、同じコマンドをcronから実行しても
エラーがでない理由がわかりませんでした。
ご教授をお願いいたします。
0924nobodyさん
2011/04/27(水) 18:06:48.38ID:???0925nobodyさん
2011/04/27(水) 18:15:32.78ID:???0926nobodyさん
2011/04/27(水) 18:18:34.43ID:???バッチファイルをPHPを使って書き出すというわけだな
0927nobodyさん
2011/04/27(水) 18:45:45.98ID:???/home/hoge/ ディレクトリのパーミッションを確認。
テキストファイルのオーナーをfugaにするというのは、/home/hoge/ 配下のままオーナーをfugaにするのか、
それとも/home/fuga/ 以下に設置した場合なのか。
Unable to fork は子プロセス起動エラーなのでブラウザからアクセスした場合にexecできなかったことを示す。
cronでそのPHPのバッチファイル?を直接実行したのならforkエラーは出ない。
0928923
2011/04/27(水) 19:50:18.85ID:1DO68SdUすみません。
お恥ずかしい。。。
>>926
バッチファイルをPHPで記述しています。
で、そのバッチファイルが/home/hoge/下にある
テキストファイルを読み込んでいます。
>>927
> /home/hoge/ 配下のままオーナーをfugaにするのか、
こちらになります。
不思議なことに同じ状況で何度かブラウザからアクセスしてバッチの起動を試すと
Unable to forkが出ずにexecもしっかり実行されていることもあります。
0929nobodyさん
2011/04/27(水) 19:52:09.91ID:???0931923
2011/04/27(水) 20:08:44.45ID:1DO68SdU制限を設定した覚えはないので、初期値のまんまだと思います。
プロセス数の制限はどの辺を確認すればよろしいのか教えて頂けますか?
すみません。。。
0932nobodyさん
2011/04/27(水) 21:50:07.27ID:???0933nobodyさん
2011/04/28(木) 08:34:11.77ID:???ファイルのオーナがhogeだとエラーは1度もでないのですが、
fugaだと必ずエラーが出て、何度か同じ状況で試すと
エラーがでないことがあるという状況なんです。
ですので権限が関係あるのか無いのか
いまいちピンとこない状況です。。。
ちなみにブラウザでアクセスしたときに
呼ばれるPHPと、そのPHPから呼ばれる
バッチファイルのPHPのオーナーは
fugaで、/home/fuga/配下にファイルがあります。
0934923
2011/04/28(木) 08:35:07.94ID:zJffplQy0935nobodyさん
2011/04/28(木) 08:48:40.57ID:???要点を極限まで絞って質問してくれ
0936nobodyさん
2011/04/28(木) 10:11:40.00ID:???0937nobodyさん
2011/04/28(木) 10:12:08.22ID:???問題となっている事項を再整理してから質問してください。
再度の質問をする際には、>>1 を読み返してください。
0938923
2011/04/28(木) 10:28:28.42ID:zJffplQy【OS名】CentOS
【PHPのバージョン】5.1
【連携ソフトウェア】MySQL
ブラウザからアクセスがあったら
/home/fuga/aa.phpがapache上で実行され
このプログラムから
/home/fuga/batch.php
をexecで実行します。
/home/fuga/batch.php
は
/home/hoge/aa.txt
を読み込むのですが、
/home/hoge/aa.txtのオーナーが
fugaだとexec実行時に「Unable to fork」とエラーが表示されます。
ただ、同じ状況で何度か試してみると、
稀にエラーが出ずに実行されることがあります。
apcheユーザのクーロンから/home/fuga/batch.php
を実行すると上記エラーは1度も出ませんでした。
/home/hoge/aa.txtのオーナーが
hogeの場合でもそういったエラーは1度もでませんでした。
/home/hoge/aa.txtはパーミッションを常に777にした状態でも
上記のような現象が出てしまいます。
原因が掴めず途方にくれております。よろしくお願いします。
0940。 ◆oDupeixhZv52
2011/04/28(木) 11:12:17.72ID:???0941923
2011/04/28(木) 11:40:12.72ID:zJffplQyexecは以下のような感じで記述しています。
よろしくお願いします。
exec('/usr/bin/php /home/fuga/batch.php arg1 arg2 >> /tmp/fuga.log 2>&1 &');
>>940
バッチを外部起動にしているのは、
バッチ処理が動いている間にクライアントを待ち状態にしないためになります。
includeにしちゃうと、バッチが終了するまで、
クライアントを待たせちゃうような気もするのですが、
そのことを「重くなる」と表現されているのでしょうか?
0942nobodyさん
2011/04/28(木) 11:40:14.61ID:???exec() を popen() で置き換えて何のエラーが返ってくるか調べてみたら?
どっちも同じコードを使ってプロセスを起動しているから
0943nobodyさん
2011/04/28(木) 12:22:05.15ID:5jyOsFLH長い行があり、
allowed memory size of〜と出ますが、
このエラー出ても後続の行を処理する方法はないですか?
0944nobodyさん
2011/04/28(木) 12:35:40.26ID:3JBHsj5i0945nobodyさん
2011/04/28(木) 12:36:58.15ID:zoh8QsmK結構お客さんに無茶ブリされてますわ
0946nobodyさん
2011/04/28(木) 12:47:53.59ID:???freadやfseekで改行位置探ればいいだけ
0947nobodyさん
2011/04/28(木) 13:51:44.39ID:???一行が1TBとかあったら大抵のシステムでエラーでるわw
0948nobodyさん
2011/04/28(木) 13:52:55.86ID:zoh8QsmKその1TBを読み込んでくれと言われてる状態
0950nobodyさん
2011/04/28(木) 14:03:09.70ID:???0951nobodyさん
2011/04/28(木) 14:07:56.13ID:???0952nobodyさん
2011/04/28(木) 14:22:34.75ID:???だから少しずつ読めばいいだろうが
while内でどんな処理をしたいのか知らんけど、
ファイル読み込みルーチンのアルゴリズムくらい自分で工夫しろよ
0953nobodyさん
2011/04/28(木) 15:25:16.41ID:???メモリに入りきらない長い行があるファイルって何さ?
whileで行ごとに処理とか言ったら、テキストっぽいけど……
テキストなら、一行で1TBもあるとか、
改行コード指定を間違ってるとしか
0954923
2011/04/28(木) 15:39:04.83ID:zJffplQypoepnを使ってエラーを再現してみたところ、
Cannot allocate memory
と表示されていました。
PHPのmemory_limitは512Mになっていたので
いったん無制限にしたところ、エラーがでなくなりました。
ただ、topコマンドで見る限り、
そもそも/usr/bin/php /home/fuga/batch.phpは
せいぜい数十MBしかメモリを消費しないので、
なんでメモリのエラーがでたのかが不明なのと、
オーナーがfugaに変わると、エラーが出ていたのかが
わかりません。
その上再度PHPのmemory_limitを512MBにしても
エラーを再現できなくなってしまいました。
Cannot allocate memoryっていうのも初めて見たので
memory_limitをいじることが正しかったのかといったところも
不安ではあります。
0955nobodyさん
2011/04/28(木) 15:47:57.12ID:???偶然memory_limitを変更したらエラーが出なくなったため、それが原因と思い込んでるとか。
オーナー変更云々もそう。
0956nobodyさん
2011/04/28(木) 16:15:01.84ID:???ttp://hibari.2ch.net/test/read.cgi/hp/1296016577/580-
0957923
2011/04/28(木) 16:23:23.51ID:zJffplQyそうですよね。
自分でも別のところに原因があるんじゃないかと
思いつつも、全く原因に思い当たる節が無いので
困っているところです。。。
今日はphp.iniの設定を変えたことで
apacheの再起動をしているんですが、
そのあたりも関係しているのかとか
考えているところです。
09581/2
2011/04/28(木) 16:27:36.11ID:6tXmcG0P$category = $_REQUEST["category"];
$no = $_REQUEST["no"];
?>
<html>
<head>
<title>sample02</title>
</head>
<body>
<?php
if($category == 1){
print "あなたはカテゴリー${category}にいます。<br>";
if($no == 1){
print "あなたはNO.${no}番のいいちこを選びました";
}
}
if($category == 2){
print "あなたはカテゴリー${category}にいます。<br>";
if($no == 2){
print "あなたはNO.${no}番の大五郎を選びました";
}
}
?>
<p><a href="parameter2.html">戻る</a></p>
</body>
</html>
(こちらを借りさせていただいてます)
ttp://plog.pya.jp/program/php/lesson09/sample02.html
09592/2
2011/04/28(木) 16:31:40.00ID:6tXmcG0Pカテゴリを増やしたいときに
if($category == 3){
print "あなたはカテゴリー${category}にいます。<br>";
……
とまた繰り返して書かずにすむ方法はありますか
うまく言えませんがお願いします
0960nobodyさん
2011/04/28(木) 16:38:18.85ID:6tXmcG0P++と繰り返し文でできる気がしました
今やってきますのでできなかったらまた来ます
すみませんでした
0961nobodyさん
2011/04/28(木) 17:19:54.77ID:6tXmcG0P$rs = mysql_query("select * from main where category_id = [あああ] order by count desc",$con);
「main」テーブルの中の「category_id」フィールドが1(,2,3…)のものだけ表示したいと思ってます
[あああ]の部分は++とか使えないと思うんですけど、どうしたらいいでしょうか
説明が下手ですみません
0962nobodyさん
2011/04/28(木) 17:21:09.14ID:???PHP関係ないけどね
0963nobodyさん
2011/04/28(木) 17:29:07.52ID:6tXmcG0Pありがとうございます!
またがんばってきます
0964nobodyさん
2011/04/28(木) 17:52:42.13ID:???それならただ単に$categoryを文字列につなげればいいだけだが
0965923
2011/04/28(木) 18:56:59.50ID:zJffplQyapacheの再起動を行ってから
エラーが再現できなくなりました。
それ以外の設定ファイルは何も触っていないので
apacheの再起動が関係しているのかな・・・と
勝手に思っているのですが、
そろそろお手上げになりそうです。。
ダメもとでも構いませんので
確認しておいたほうがいい所があれば
教えて頂けないでしょうか。
0966nobodyさん
2011/04/28(木) 21:52:27.46ID:???0967nobodyさん
2011/04/28(木) 22:03:15.85ID:cPVEaxySSNSサイトでログイン認証を行う場合に、ログイン画面だけはhttps、ログイン後はhttpというサイトがあったのですが、
これはどのような仕掛けで行っているのでしょうか。
認証画面に飛ばすサンプルはぐぐれば見つかりますが、その時に特に「httpsに飛ばせ!」のような記述は見当たりません。
どのようにして(誰が?)、このページはhttp、こっちのページはhttps、という選別(?)をしているのでしょうか。
0968nobodyさん
2011/04/28(木) 23:39:43.25ID:???ログインフォームのaction部分にhttps指定するだけ
その後httpsじゃない通信したければheader("Location: http://sample.com/");とかで移動させるだけ
0969nobodyさん
2011/04/28(木) 23:56:01.73ID:???httpsからhttpに移動しようとしてるけどいいのか?みたいな。
0970nobodyさん
2011/04/29(金) 00:12:47.61ID:84jXJbM/アクセスログを記録するときはファイルロックはしない
前者はロックしないと壊れる
後者は追記していくので壊れることは無い
こういう認識でいいでしょうか?
0972nobodyさん
2011/04/29(金) 00:33:35.34ID:???ロックする必要もない
0973nobodyさん
2011/04/29(金) 01:13:07.60ID:???名前取得と書き換えの間に次のプロセスで名前取得が起きた場合とか
0974nobodyさん
2011/04/29(金) 02:34:05.16ID:???ログを書くスレッドを一個用意すればいいよ
0975nobodyさん
2011/04/29(金) 06:05:06.91ID:???おお即レスありがとう。
やっぱり知ってれば単純な設定なんですね・・書くまでもないってことかぁ。
0976nobodyさん
2011/04/29(金) 10:48:59.87ID:???0977nobodyさん
2011/04/29(金) 13:07:02.38ID:???そのせいでgithubとかが全てhttpsになるように変えたと思うんだけど・・・
0979nobodyさん
2011/04/29(金) 14:36:33.70ID:???0980nobodyさん
2011/04/29(金) 16:09:37.61ID:???0981980
2011/04/29(金) 16:11:44.99ID:???だれかたのむ
0982nobodyさん
2011/04/29(金) 16:41:25.35ID:???0983nobodyさん
2011/04/29(金) 16:43:03.43ID:???ロックする必要もない
0984nobodyさん
2011/04/29(金) 16:43:43.17ID:???0985nobodyさん
2011/04/29(金) 16:44:10.89ID:???そういうもんとして受け入れるしかないだろ
0986nobodyさん
2011/04/29(金) 16:44:26.78ID:???0987nobodyさん
2011/04/29(金) 16:45:01.78ID:???0988nobodyさん
2011/04/29(金) 16:45:27.68ID:???PDOのがいいんですね
これからPDOを使うことにします
0989nobodyさん
2011/04/29(金) 16:46:42.57ID:???そして連投規制(笑)
0990nobodyさん
2011/04/29(金) 16:48:17.22ID:???0991nobodyさん
2011/04/29(金) 16:48:34.40ID:???ファイル名の変更は現実問題として無理なのでNGです。
0992nobodyさん
2011/04/29(金) 16:49:00.83ID:???0993nobodyさん
2011/04/29(金) 16:49:40.21ID:???0994nobodyさん
2011/04/29(金) 16:50:49.30ID:???0995nobodyさん
2011/04/29(金) 16:51:17.41ID:???0996nobodyさん
2011/04/29(金) 16:52:27.61ID:???0997nobodyさん
2011/04/29(金) 16:53:53.83ID:???0998nobodyさん
2011/04/29(金) 16:56:38.99ID:???0999nobodyさん
2011/04/29(金) 16:57:50.90ID:???1000nobodyさん
2011/04/29(金) 16:59:12.45ID:???まさかサブドメインにアンダーバー(_)が入っているとIEで使えないとか・・・。
いい勉強になりました
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。