△▲ WebProg 初心者の質問 Part11 ▼▽
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/28 18:58:29ID:???質問したいけど、どうしたら良いか分からない。
そんなときは、ここに書き込んでください。
板の住人や、その他が、けなしながら、厳しく教えてくれるかも。
質問する前に、まずはここを読んでね。
【注意事項】
・質問する前にGoogleで検索してみましょう
http://www.google.co.jp/
・環境(ソフトウェアのバージョンなど)は、必ず書いてください。できるだけ詳しく。
後から情報を書き足す、いわゆる情報の小出しは極力避けてください。
・何がしたくて、何ができて何ができないのかを書きましょう
・マルチポスト(複数のスレッドで質問する行為)は絶対に禁止です。
・過去ログは必ず読みましょう。あなたと同じ質問をしてる人がいるかも知れません。
2ch 総合ガイド
http://www.2ch.net/guide/
お願い。
適切な、板、スレ、を発見した場合、誘導してあげましょう。
スレの性質上 age 進行でお願いします。
関連情報は
>>2-3
前スレ
△▲ WebProg 初心者の質問 Part10 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0546nobodyさん
05/01/25 03:28:36ID:???0548nobodyさん
05/01/25 23:36:09ID:???0549nobodyさん
05/01/26 10:25:07ID:???truncate(FL, 0);やtruncate(FL, tell);って
面倒だからいつも省いてるけど、実際必要ですか?
今までファイル壊れたことないんだけど、たまたまなのかな?
0550nobodyさん
05/01/26 11:03:05ID:???モードによって必要
wモード、つまり>に於いては自動で最初に
truncate(FL, 0);
される。しかし、例えばr+(+<)モードではこれが行なわれない。
flockを使った保護機構では、ロックをかける時には既にファイルを開いている必要があるので、
ロックする前に中身を変えてしまうwモードは使えない。
そこでr+モードで中身には手を着けず開き、
ロックをかけた後にファイルサイズを0にする、といった方法が取られる訳。
因みにtrunscateを怠ると、新しく書き込んだデータが前より小さい場合、ファイルの末尾にゴミが残る。
0551nobodyさん
05/01/26 11:19:41ID:???flockする時はwモードを使ってはいけない事を知らないと、
「flockはダメだ。ロックしてるはずなのに頻繁に壊れる」
という認識に至るんだろうね。
昔自分がそうだったように…
0554nobodyさん
05/01/26 22:25:31ID:NprQarfg俺はおまいだ!
0555nobodyさん
05/01/26 23:12:54ID:48bT6W6Oみなさん、どんな方法ではかっていますか?
0557nobodyさん
NGNGサーバーBでサブドメインを使いbbs.xxx.com/を可動させます。
この際にログファイルはサーバーAにある場合、
サーバーBでCGIを動かすのにサーバーAにあるログファイルを
開く事はできるのですか?
同じサーバーであれば './data.txt'; 等でいいのですが
上記の場合どのようになるのでしょうか?
0559nobodyさん
05/01/27 00:40:30ID:???open関数とかじゃ無理
サーバAにデータ内容を送るCGI置いてサーバBから取得する方法か
Telnetでログインしlessコマンドの結果とか
技術あるならSOAP使うなりなんとでもあると思うんだが
0560nobodyさん
05/01/27 00:46:02ID:YyOdxZNb即答ありがとうございます。
bbs.xxx.com/bbs.cgi
を実行したとすると直接サーバーAにあるファイルは
openできないと言うことでしょうか?
データ内容を送るCGI置いて…云々という事は
CGIを実行するサーバーにデータを送らなければならないということですか?
0562549
05/01/27 01:45:48ID:???やはり使うべきなんですね…。
>wモード、つまり>に於いては自動で最初にtruncate(FL, 0); される
>flockする時はwモードを使ってはいけない
いつもPerlメモに載ってる排他制御を使ってるんですが、flock使うときは気をつけます。
考えてみたら+の付くopenは使ったことなかったかも、ほんとたまたまだったのか…汗
>たまたまファイルサイズが減らないファイルだったからだよ。
ログファイルから一行削除とかもやってたんですが。
やばいやばい。早速見直してみます(焦
0564549
05/01/27 09:01:42ID:???実験と推測で下記のような結論?になったのですが、あってますでしょうか?
open(OUT, "> xxx.txt");
この時点でファイルが空になる。
つまり自動でtruncate(FL, 0);になる。#よってtruncateもseekも必要なし?
この後にflockをかけてもopenとflock間に他プロセスが割り込む余地があり、
flockをかけていないのにファイルが空というのはヤバイので、このモードではflockを使うべきではない。
open(OUT, "+< xxx.txt");
この時点ではファイル内容そのまま。ファイルポインタは先頭。
ただしopenからflockまでの間に他プロセスが割り込む余地があるので、flock後にファイルポインタを先頭にセットしなおす必要がある。
内容が残ったまま先頭から書き込む為、ファイルサイズが減る場合にゴミが残るのでtruncateが必要。
open(OUT, ">> xxx.txt");
truncateは不必要。
しつこくて申し訳ありません。今度、プログラミングPerl買います…
0565nobodyさん
05/01/27 12:46:36ID:3YRNxOT8初めてcgiの勉強をしています。アクセスカウンタを作るという所でいきなりこけています。
#!/usr/local/bin/perl
# アクセスカウンタ
print "Content-type: text/html; charset=Shift_JIS\n\n";
# カウントファイルから読み込み
open(IN, "< counter1.txt");
$count = <IN>;
close(IN);
# カウント増加
$count++;
# カウントファイルに書き込み
open(OUT, "> counter1.txt");
print OUT $count;
close(OUT);
print <<EOL;
<html>
<body>
<p>あなたは $count 人目のお客様です</p>
</body>
</html>
EOL
0566565
05/01/27 12:50:27ID:3YRNxOT8「0」とだけ入力したcounter1.txtというファイルも同じディレクトリに保存すれば
動くはずらしいのですが、動きません。ココがクリアできないと説明書の先に進めませんつД`)・゚・。・゚゚・*:.。..。.:*・゚
自分でいくらじーーっとみてもどこの記述が間違っているのかわかりません。
間違ってるところ教えてください。よろしくお願いします。
0567565
05/01/27 12:53:08ID:3YRNxOT80568nobodyさん
05/01/27 13:27:19ID:???そのCGIはどこまで動くの?
ちゃんとHTMLは出力されてるのか?
出力された場合「あなたは @@ 人目のお客様です」
@@の中はどんな値が入ってるの?
値がないならcounter1.txtのファイルパスが違うんじゃないの?
$count++;のところに$count = "test";に変えてcounter1.txtにtestって保存されるかチェックした?
0569nobodyさん
05/01/27 14:39:30ID:???どういった手順なのか載ってるサイトありますか?
クライアント側のやることを知りたいのです。
0570nobodyさん
05/01/27 14:44:52ID:???>>550-551で説明した範囲ではほぼ完璧
>ただしopenからflockまでの間に他プロセスが割り込む余地があるので、
>flock後にファイルポインタを先頭にセットしなおす必要がある。
これはファイルハンドル単位で別じゃ・・・
まあ、この場合疑わしきはやっておいた方が良いか
a(>>)モードの場合、ロックするまでに他のプロセスで、
追記される可能性があるので、ロック後にはtruncateは無用だけど、
ファイル末尾にseekする必要あり。
また、flockを手動で解除する場合は、
その前にはバッファをフラッシュしてやらないと、
ロック解除後に書き込まれることになる可能性がある。
closeに任せる場合は・・・知らない。
実験した以上は自動でフラッシュされている模様
>>565
仮にcounter1.txtが無くともエラートラップして無いから、
そのまま突き進んで動くはず・・・
どこかのUNIX系サーバにアップロードして動かしているのであれば、
そのサーバの設定とcounter1.txtのパーミッションをチェック。
SuExecが動いてないとパーミッションを666にしないとファイルに書き込めない
0571nobodyさん
05/01/27 14:52:19ID:???>a(>>)モードの場合、ロックするまでに他のプロセスで、
>追記される可能性があるので、ロック後にはtruncateは無用だけど、
>ファイル末尾にseekする必要あり。
これ、昔はともかく今はいらんだろ。
書き込みで呼ばれるwrite(2)の時はlseekで末尾に移動する。
0573565
05/01/27 21:04:18ID:???ええと、何も表示されず、「Internal Server Error」となります。
testに変えてやってみましたがなにも保存されませんでした。
>>570
サーバーはローカルです。apache2です。OSはXPです。
ローカルで動かすときでもパーミッションの設定はいるのでしょうか。
どうやって設定するんでしょう?
お二人とも有難うございます。すみません、こんな初歩の初歩みたいなことお聞きして。
0575nobodyさん
05/01/28 00:09:51ID:???>>288 さんと同じような症状がでてしまいました。
phpMyAdminをFreeBSD5.3+Apache2.0.52,PHP4.3.10に入れたのですが、やはり
Call to undefined function: pma_reloadnavigation() in /usr/local/www/phpMyAdmin/header.inc.php
が出てしまいます。
PMA_reloadNavigation()ってのは'libraries/common.lib.php'中で定義されてて、
header.inc.php の頭でrequire_once('./libraries/common.lib.php')しています。
なのにどうしてundefined functionになるのかが判りません。。
どなたか判る方おりませんでしょうか?
>>288 さんはどうやって解決されたのでしょう?
0576nobodyさん
05/01/28 00:25:11ID:???CGIProgを書いている方は、クライアントが送ってきたデータの日本語エンコーディング方式をどうやって判断しているんでしょう?
大抵WinIEのため、Shift-JISでしょうが、それでもEUCやUTF-8も有り得ます。
デコードする処理が1通りだと処理が楽だと思いますので、
そもそも、サーバーからブラウザにエンコーディング方法を指定できないでしょうか?
例えばShift-JISでエンコードしろよ、とです。
HTMLフォーム上からの場合はこのページの文字コードが基準でクライアントがエンコードするようですが、
クライアントに明示的に指定しておくにはどうしますか?
<FORM acceptCharset=''>はこのリクエスト送信へのサーバーのレスへの指定だそうで。違いますね。
HTTPサーバー自体の設定として指定ヘッダを乗せのでしょうか?あるならば?どんなものでしょう?
0577549
05/01/28 06:18:10ID:???>これはファイルハンドル単位で別じゃ・・・
あっ、指摘ありがとうございます。
後段は自分には難しくて理解できませんが…
ちょっとずつではありますが理解していくうちにperl面白くなってきました。
これから勉強していこうと思います。ありがとうございました。
>>571
勉強になりました。
0578nobodyさん
05/01/28 07:43:12ID:???PC環境のみですが表示した文字コードで帰ってくるものとして作っています。
JcodeやPHPの自動判別だと、かえって誤判定しますから
0579nobodyさん
05/01/28 10:45:24ID:81532teskorea/chinese/その他を選択した場合は正しく更新されたが、日本語を選択したらエラーが出ます。
こちらはWinXPSP2/Apache 1.3.33/PHP 4.3.10/MySQL 4.1.9
0580nobodyさん
05/01/28 17:36:33ID:mrttjmp/数分後にブラウザをリロードしたら、エラーが出なくなってた。なんなんだ・・・。
0581nobodyさん
05/01/28 22:15:35ID:???0582nobodyさん
05/01/28 23:01:14ID:Yva4N6l7どちらに書けばいいんでしょう?
0583nobodyさん
05/01/28 23:11:18ID:???0584nobodyさん
05/01/29 00:07:08ID:???具体的なコードの質問
【PHP】質問スレッドpart26【php】
http://pc5.2ch.net/test/read.cgi/php/1103636095/
それ以外の質問
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
0585nobodyさん
05/01/29 06:46:54ID:???0586nobodyさん
05/01/29 06:49:41ID:???0589nobodyさん
05/01/29 09:24:49ID:GH8qohAzFreeBSD4.10+apache_1.3.33+php-4.3.9の環境です。
クライアントはXP+IE6ですが、MacOS9+IE5でも確認しましたが、改善されません。
まさかと思い、サーバーのOSごと再起動してみましたが、状況に変化なし。
解決出来たきっかけを思い出してもらえませんか?>580さん
0590nobodyさん
05/01/29 10:32:21ID:???0591nobodyさん
05/01/29 10:51:03ID:???0593589
05/01/29 12:21:42ID:???この問題はphpMyAdmin2.6系のバグの可能性が大です。
ダメ元でphpMyAdmin 2.5.7-pl1で試したら全然問題なかったです。
これだけの為に6時間の無駄、、、、(TдT)
0596nobodyさん
05/01/30 15:37:48ID:???できればたまったファイルは一定の数になると古いのから消えていくようにしたいです。
0597nobodyさん
05/01/30 15:42:17ID:???0599nobodyさん
05/01/30 18:05:48ID:???0600nobodyさん
05/01/30 18:38:30ID:/GtSjIXs初めてインストールしたんですが、同じ症状でてここにたどり着きました。
で、結局こんなの見つけました
http://sourceforge.net/tracker/index.php?func=detail&aid=1111855&group_id=23067&atid=377408
ここにコメントあり。
lang/japanese-utf-8.inc.php の
$charset = 'UTF-8';
を
$charset = 'utf-8';
にすれば解決と。
現在は fix されているようです。
0601600
05/01/30 18:40:36ID:???0603nobodyさん
05/01/30 21:07:30ID:???■ ■
■ 新規質問は名前欄・メール欄を空にして行え ■
■ ■
■ 質問者が返信する際は、名前欄に「最初に質問したレス番号」を入れろ ■
■ ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0604599
05/01/30 22:15:08ID:???0605599
05/01/31 00:11:57ID:???0608nobodyさん
05/01/31 22:17:52ID:Q+Rv1q8yとよく聞きます 自分はWindowsしか使った事が無いのですが
Perlの書籍とか買っても理解する事ができるのでしょうか?
PerlはWindowsにも移植されていますが、やはりUNIXで使うのとでは
なにか違いや制限があるのでしょうか?
やはりPerlを学ぶにはまずUNIXから入った方がよいのでしょうか?
教えてください
0609nobodyさん
05/01/31 22:23:35ID:???0610nobodyさん
05/01/31 22:26:31ID:???UNIX系を知っているに越したこともないけど知らなくとも出来る
制限は若干あるけど初心者のうちは多分関係ないから
気にせずやればいいと思うよ
0611608
05/02/01 00:06:06ID:???ではさっそく何か書籍を買いたいと思います
0612nobodyさん
05/02/01 04:48:32ID:???blogからは<img src="http://...counter.php">として呼び出しています。
このカウンタにアクセス解析をつけようと思ったのですが、HTTP_REFERERが構造上blogの
アドレスになってしまいます。<img src=>の部分をjavascriptなどを使ってblogを訪れた人のHTTP_REFERER
をcounter.phpに引き継ぐ方法はないでしょうか?
という質問はどこへ行ったらよいでしょうか?
0614nobodyさん
05/02/01 07:39:36ID:???自分でできないなら既製品を探す。
0615これ!dama と!omikujiだけ?かな
05/02/01 08:26:29ID:???0616nobodyさん
05/02/01 08:27:10ID:???0617612
05/02/01 13:55:28ID:???KENTのアク解とはhttp://www.kent-web.com/
のことでしょうか?アクセス解析が見あたらないです。
参考になりそうなソースでもいいので誰か教えてください。
>>614
どうしても欲しい物というのではなく、自分で作りたいんです。
>ゲットさせるURLにクエリー付けてPHPに渡すだけ。
↑これは参考になります。ありがとうございました。
0618nobodyさん
05/02/01 14:42:23ID:???あるじゃん。ひどい人だね。
Access Report
http://www.kent-web.com/data/report.html
0619nobodyさん
05/02/01 14:49:06ID:???とりあえずPHPのオフィシャルはここね
http://jp.php.net/manual/ja/language.variables.external.php
count.php?foo=barとやれば、$_GET['bar']で取れるから
Javascriptは他からコピればいいけど、URLエンコードを忘れないよう
0620nobodyさん
05/02/01 14:50:03ID:???0621576
05/02/01 16:29:27ID:???レスありがとうございます。
やはり吐き出したHTMLページの文字コードと同じもので送り返して来るという前提でいいですかね。
中にはブラウザ以外でアクセスする者もいるでしょうが(笑)
処理しない想定外のエンコーディングはエラー処理さえしっかりすればいいですかねぇ。。。
うーんw
0622nobodyさん
05/02/01 16:47:03ID:???<SCRIPT Language="JavaScript">
<!--
document.write("<img src='./counter.php?referrer="+document.referrer+"'>");
// -->
</SCRIPT>
$ref = $_GET['referrer'];
でできました。
document.referrer で検索をしたらたくさんの情報がありました。
みなさんありがとうございます。
blog使ってるかたカウンターはどんなの使ってますか?
0623nobodyさん
05/02/02 19:21:52ID:???0624nobodyさん
05/02/03 00:23:00ID:???0626nobodyさん
05/02/03 12:08:33ID:???○ PerlはWindows9x系では使えない
0627nobodyさん
05/02/03 13:03:52ID:???0628nobodyさん
05/02/03 14:21:07ID:???0629nobodyさん
05/02/03 20:03:23ID:???しかしながら、トップで文字セットをEUC-JPにしてログインしても
utf-8が渡ってしまいます。
環境
php 4.3.10
mysql 5.0.2-alpha
phpMyAdmin 2.6.1
0630nobodyさん
05/02/04 02:56:20ID:???誰かに勝手にエロサイトの宣伝を投稿されていました。
なんらかの形でパスワードが盗まれたのでしょうか?
それとも、よくわからないけど直接入り込んだ??
cgiを書き換えるとか、パーミッションを変えるとか
何か対策はありますでしょうか?
0631630
05/02/04 02:57:22ID:???http://www.2apes.com/
0632nobodyさん
05/02/04 09:27:24ID:???0633629
05/02/04 10:13:35ID:???結局、全部入れ直しで解決しました。
0635nobodyさん
05/02/04 13:20:08ID:???>それとも、よくわからないけど直接入り込んだ??
はい、でむぱさんキタ─wwヘ√レvv〜(゜∀゜)─wwヘ√レvv〜─ !!
0636nobodyさん
05/02/04 15:43:27ID:???普通のhtmlからcgiを呼び出したいのですが、
formを使う以外に方法はないでしょうか。
SSLが禁止されているサーバなので、
<!--#exec cgi="hogehoge.cgi"-->も使えません。
他の方法があればお願いいたします。
0641nobodyさん
05/02/05 03:31:55ID:???Perlの起動が上手くいきません…
XPでPerlのVerは5.8.3です
とりあえずデフォルトでインストールは終わったのですが
コマンドプロンプトを開くと即閉じてしまいます。
サイトみてもXPの説明が…
0644641
05/02/05 04:50:26ID:???すぐに終了してしまう状態です。一瞬で
■ このスレッドは過去ログ倉庫に格納されています