トップページ⇒php
1001コメント330KB

【PHP】質問スレッドpart33【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/16(木) 03:19:52ID:xwXojaq/
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0552nobodyさん2006/03/05(日) 20:13:54ID:???
ちら読みしたけどわかんね。http://bugs.php.net/bug.php?id=27792 かもね。
でもエラーは「filesize() [function.filesize]: stat failed for /video/1003_20060303220000_20060303225400.nuv」なんでしょ?
0553nobodyさん2006/03/05(日) 23:08:03ID:???
もりこもりこー
0554nobodyさん2006/03/06(月) 10:35:47ID:???
実はPHPはstat64を呼んでなかったりして。>>552のバグレポート読んだ感じからして。
勘だけど、statした結果のファイルサイズ(st_size)が2GB以上だと符号付で見なしたときに負の値になって、PHPがどっかでエラーチェックのつもりで0と比較してエラーフラグ立ててるとか、どうせその手のアフォな話だと思うね。

>>540
というわけで、現時点ではPHPで2GB以上のファイルは扱えない、といったところか。

そもそもPHPのintはCのintそのままだからそこらのプラットフォームでは0x80000000以上の数値扱うこと自体に無理があるんだよな。
PHP6では多倍長整数がサポートされることを祈ろう。
0555nobodyさん2006/03/06(月) 11:31:40ID:???
>>554
マニュアルにあえてsprintf("%u")での対処方法が書いてあったところを見ると、
元々はstatの戻りをstringによる数字で扱ってて、うまく動いてたんだろうな。
ところがそれを忘れて改良してしまった部分があって今は動かなくなってしまった、
という可能性が高そうだな。PHPじゃよくある話だし。
0556nobodyさん2006/03/06(月) 16:14:07ID:???
>>554
intといったらshortの場合もあるし、longと言った方が適切では。
0557nobodyさん2006/03/06(月) 17:28:12ID:???
>>556
あーphpのintはcのlongだった。訂正。
intはcの標準上よろしくない罠。
0558nobodyさん2006/03/06(月) 17:34:37ID:zhIGepD3
ひとつ疑問に思ったのですが
fopenでファイル開いた後 fclose で閉じなかったら
どんな悪影響がでるんですか?
0559nobodyさん2006/03/06(月) 17:37:15ID:???
同じプログラム内で大量にfopenしてたらリソース使い切って致命的エラーになるかも。
あと、書き込みしたままfcloseしてなかったらプログラム終了までフラッシュされずに
ファイルが破損する確率が上がるかも。
flockしっぱなしで放置するとプログラム終了まで他のプログラムがアクセスできなくなるかも。

そんなもんか?
0560nobodyさん2006/03/06(月) 17:48:22ID:???
>>558
まあ基本的にはOSが閉じ忘れを面倒見てくれる(もしくはPHPもやってくれるかな?)から大したことはないってのもある。
人によってはfopenしたのにfcloseしていないプログラムに気持ち悪さすら覚えるらしいことも頭に入れておくべし。
0561nobodyさん2006/03/06(月) 19:45:27ID:???
あるプログラムで
Web経由で起動しとったらURIを、コマンドラインから起動しとったら
コマンドラインを標準出力に吐き出したいんだが
ちからづくでならなんとかなったんだけど
格好良く書くナイス方法は無いかな
0562nobodyさん2006/03/06(月) 19:56:51ID:???
>>561
日本語で書け
0563nobodyさん2006/03/06(月) 20:08:13ID:???
>>561
$msg = @ $_SERVER['REQUEST_URI'] or $msg = @ implode(' ', $argv) or $msg = 'おてあげ';
echo $msg;
てこと?
0564nobodyさん2006/03/06(月) 20:42:24ID:???
>>562
ワロタ
05655612006/03/06(月) 21:13:35ID:???
>>563
ヒントありがとう
それそのままだと1とか出ちゃったから
それヒントに姉ちゃんがんばるわ
0566nobodyさん2006/03/06(月) 23:11:58ID:6wJc3dTK
sakura.html の中に
<?include("print.php");?>
と書かれているとします。
この時print.php側で「sakura.html」のURLもしくはパスを取得し表示する方法はありますか?

$url = getenv('REQUEST_URI');
print $url;

とやってみた所
「print.php」が表示されてしまいます。
0567nobodyさん2006/03/06(月) 23:27:25ID:???
$_SERVER['PHP_SELF']
$_SERVER['REQUEST_URI']
0568nobodyさん2006/03/06(月) 23:35:52ID:???
>>566
sakura.htmlってのはPHPじゃないよね。
PHPのincludeはあくまでも、その場所にPHPのコードを
挿入するのと同じ動作だから。
|「print.php」が表示されてしまいます
とはならない。
0569nobodyさん2006/03/06(月) 23:42:05ID:???
>>567-568
すいません。includeの中身を
include ("http://***.com/print.php");
とURLで指定してました。
相対パスに変更した所、うまく動作しました。
0570nobodyさん2006/03/07(火) 08:25:04ID:???
>>569
付け加えるとincludeファイルは
webで見えない場所の方がセキュリティ的に良いと思う
0571皮先くん ◆N3i.Qu1SoY 2006/03/07(火) 09:35:07ID:W7VIXknd
【福島】逮捕された産婦人科医師を救え4
ttp://society3.2ch.net/test/read.cgi/hosp/1141605385/
不当にタイーホされた産婦人科医をなんとか救い出そうと思います。
同じ医師としてこのような不当タイーホは絶対に許せません。
参考
ttp://www.kaog.jp/20060306top.htm

そこで、PHPを使って署名をつのりたいのですが、
これをたたき台にして可能でしょうか?
ttp://oresama.hopto.org/~sheel/phptest/formtest/form.php
問題は、これで署名されたあとにどのようにして
整形されたhtmlをたたき出すか、という点です。
それと可能なら現在までに集まった署名の数をリアルタイムで
表示させたいのですがどうしたら可能でしょうか?
0572nobodyさん2006/03/07(火) 12:38:46ID:???
ぷぎゃー
0573nobodyさん2006/03/07(火) 12:40:35ID:???
「整形されたhtmlをたたき出す」がわかりません。
もっと具体的に。
0574nobodyさん2006/03/07(火) 13:49:50ID:???
>>573
>>313
0575皮先くん ◆N3i.Qu1SoY 2006/03/07(火) 13:56:43ID:HRxo4IHm
>>573
返答ありがとうございます。

署名文の入力は
http://oresama.hopto.org/~sheel/phptest/formtest/form.php
こちらで完了し、submitボタンをクリックすることで
text.batにどんどん追記されていく仕組みまではつくりました。
問題は、追記されていくtext.batをどのようにデータベースとして
取り扱うか、という点です。
CSV形式で追記していけばあとでいろいろと使えますか?

最終的にはたまった署名文を福島県警に郵送する予定です。
0576nobodyさん2006/03/07(火) 14:30:48ID:???
名簿業者から名簿買って転送すりゃいいよ。
0577nobodyさん2006/03/07(火) 17:25:02ID:???
関数で、変数の参照を返すことって出来ますか?
0578nobodyさん2006/03/07(火) 17:39:31ID:???
できるよ。
0579nobodyさん2006/03/07(火) 17:42:05ID:???
どうやるんでしょうか?
0580nobodyさん2006/03/07(火) 17:46:11ID:???
すみません、自己解決しました。
ttp://www.mt312.com/php/var.reference.html
0581nobodyさん2006/03/07(火) 17:50:06ID:???
次の質問なんですが。

関数から返された変数の参照をそのままempty()の引数にしたいのですが、出来ないのでしょうか?
empty(getVal())のようにすると、こういうエラーになります。
Fatal error: Can't use function return value in write context in...
0582nobodyさん2006/03/07(火) 18:06:26ID:???
リファレンスをデリファレンスしないでemptyでチェックするってどういうことよ
0583nobodyさん2006/03/07(火) 18:12:03ID:???
>>581
質問する前に、まずはマニュアル嫁
http://jp.php.net/manual/ja/function.empty.php
|変数が空であるかどうかを検査する
0584nobodyさん2006/03/07(火) 18:17:32ID:???
>>581
その通りです
0585nobodyさん2006/03/07(火) 18:40:51ID:???
ありがとうございました
どうにかして出来ないかと思ったんですが、あきらめます

>>583
読んだんですけど、参照ならどうかなと思った次第です

>>584
了解しました
0586nobodyさん2006/03/07(火) 19:25:33ID:jtyBl1lp
php上で、telnet接続での-s src_addrオプション(接続の送信元 IP アドレスを、 src_addr に設定)に
該当する設定を付加してサーバーに接続したいのですが、
fsocksopenなどでは該当のオプションが見当たりません。
system系関数を使う以外にエレガントな方法を教えてください。
0587nobodyさん2006/03/07(火) 19:52:48ID:???
>>585
>参照ならどうか
<?php
$a = 'TEST';
$b =& $a;
var_dump(empty($b));
?>
参照かどうかってことじゃなくて
|つまり、次の例は動作しません: empty(trim($name))
ってことだよ。
0588nobodyさん2006/03/07(火) 20:05:27ID:???
皮先うぜえ
0589nobodyさん2006/03/07(火) 20:13:54ID:psJP3on1
PEAR:XMLを使おうと
[ThinkIT] Part5:PHP5のXMLサポート(3) (1/2)
http://www.thinkit.co.jp/free/marugoto/1/5/3/1.html
をみながらセットアップしてるんですが、
libxml2を入れてみても、

# phpize
# ./configure --with-xsl

のところで最後に
configure: error:
You've configured extension xml, which depends on extension libxml,
but you've either not enabled libxml, or have disabled it.

とエラーがでて、makeすることができません。
どうすればちゃんとlibxmlを認識してくれるのでしょうか?

OS:redhat9
php:5.1.12

です。よろしくお願いします
0590nobodyさん2006/03/07(火) 20:14:10ID:???
>>587
trimって参照を返してるわけじゃないですよね?
変数への参照を返す関数なら、emptyが変数と同じように処理してくれないかと期待したわけです。
0591nobodyさん2006/03/07(火) 20:28:44ID:???
名前欄に皮先って入れろ
0592皮先2006/03/07(火) 20:37:47ID:???
入れました
0593nobodyさん2006/03/07(火) 20:54:41ID:???
質問です
手元のPHP本はmysql_escape_stringを使ってあるのですが、これはすべてmysql_real_escape_stringにした方がよいのでしょうか?
0594nobodyさん2006/03/07(火) 21:04:26ID:???
>>581
PHPはパース時にずいぶん式の再帰性を捨ててるから、仕方ないんだな。
俺は参照を返す関数ならempty等に渡せて意図したとおりの結果を返すような仕様だった方が意味論的には好みだけどね。
その辺はあきらめるしかない。
0595nobodyさん2006/03/07(火) 21:06:38ID:???
>>590
もっと悪い状態になってる。それは;;
そもそもなんでemptyでのチェックにこだわってるの?
if(getVal())
で同じ結果にならないか?
わざわざ「変数用の言語構造(注:これは関数ではない)」を使って
変数以外のものをチェックしようとする意図が分からん。
0596nobodyさん2006/03/07(火) 21:13:27ID:???
>>594
関数の戻り値をemptyでチェックしたかっただけで、
参照とかはどうでもいい話らしいぞ
0597nobodyさん2006/03/07(火) 21:18:36ID:???
if(!function())
でいいんジャン?
0598nobodyさん2006/03/07(火) 21:19:05ID:???
>>595
理由は、、、
既存ソースの改良で、変数をget〜に変えようとしてました。
で、emptyなどで行き詰ったわけです。
そこも含めて変えれば済む話ですが、出来るだけ手を抜こうとしてました。
無理と分かりあきらめが付きました。
ありがとうございました。

変なことしようとしてすみません。
0599皮先くん ◆N3i.Qu1SoY 2006/03/07(火) 21:50:28ID:agmd1D8V
>>575
が完全に無視されている件について。
0600nobodyさん2006/03/07(火) 21:51:58ID:???
>>598
またおいで。
0601nobodyさん2006/03/07(火) 22:27:42ID:???
名前空間に対応したPHPは
いつでるのじゃーーー
0602nobodyさん2006/03/07(火) 22:44:12ID:???
関数内での名前空間対応のPHPならすでに。
0603nobodyさん2006/03/07(火) 22:50:50ID:???
名前空間とかネームスペースとかよくわからん
06045892006/03/07(火) 23:20:34ID:psJP3on1
誰か〜
0605nobodyさん2006/03/08(水) 00:13:23ID:???
>>589
よーわからんけどphpをconfigureし直してみたらどう?
libxmlとかいうやつくっつけて。
0606nobodyさん2006/03/08(水) 07:09:48ID:???
>>589
その前に
cd ***/php-****/ext/libxml
phpize
./configure *******

はどうだろうか
0607age2006/03/08(水) 10:58:48ID:s67YcGnH
全角ひらがなで「ぁ」「あ」とかに変換する関数ってありますかね?
アルファベットの大小変換はあるんですが・・・。
0608nobodyさん2006/03/08(水) 11:04:19ID:???
>>607
何を「ぁ」「あ」に変換するんだ
0609nobodyさん2006/03/08(水) 11:05:31ID:???
>>607
そんなに種類多くないからmb_ereg_replaceかstr_replaceで置換すればいいんじゃないかな
06106092006/03/08(水) 11:07:18ID:???
ぁをあに変換する意味で書いたけど違うのかな
0611nobodyさん2006/03/08(水) 11:22:11ID:???
PHPでのソケット通信のテストをしていますが
forkした親プロセスと子プロセス間でのディスクリプタパッシング
はできるのでしょうか?
親プロセスで開いたクライアントとのソケットがresouce型になってしまうので
子プロセスに渡すことが難しいです。

よろしくお願いします。
0612nobodyさん2006/03/08(水) 11:22:33ID:s67YcGnH
>>609
置き換えでもよいのですが、文字列は「ぁ」とは限らないために
パターンがありすぎて・・。

VBでいうところのstrconv()みたいなものですかね。
0613nobodyさん2006/03/08(水) 11:33:22ID:???
>>612
変換ルールがさぱーり分からないので何を回答すればいいのか分からんのだけど。
とりあえずmb_convert_kana()のマニュアルでも読んで、それで不足してるなら
もーちっと具体的な質問してください。
0614nobodyさん2006/03/08(水) 11:35:18ID:???
>>612
ひらがなとアルファベットじゃ意味が違うだろ。
aとAはほぼ同じだが
っとつじゃ全然違う。
したがってそんな変なことをする関数はない。

パターンなんて全部網羅しても100もないんだから
関数つくればいいよ
0615nobodyさん2006/03/08(水) 11:55:10ID:???
>>611
PHPのリソース型は異なるプロセス空間へは一切渡せないんじゃないかな。
0616nobodyさん2006/03/08(水) 12:15:38ID:???
>>607
つまり、そんな関数は無い、ってことです。
0617nobodyさん2006/03/08(水) 12:29:22ID:???
>>612
パターンって「ぁぃぅぇぉゃゅょっゎ」だけじゃないの
何がやりたいんだ
0618nobodyさん2006/03/08(水) 13:11:58ID:???
>>607は>>608に答えろ。じゃないと進まん。
0619nobodyさん2006/03/08(水) 13:32:43ID:YAPHuj+m
>>602
その情報はどこに?
URLなどもっと詳しく

ググってすぐ見つかるようなキーワードを教えて
0620nobodyさん2006/03/08(水) 13:34:04ID:???
strconvでググったらこれがトップだった
ttp://www.microsoft.com/japan/msdn/library/ja/vblr7/html/vafctstrconv.asp
MSDNはオンラインで見るにはちょっと重いかな・・・

>VbStrConv.None 変換は行われません。
>VbStrConv.LinguisticCasing 大文字と小文字については、ファイル システム (既定) ではなく言語の規則に従います。UpperCase および LowerCase と組み合わせる場合にだけ有効です。
>VbStrConv.UpperCase 文字列を大文字に変換します。
>VbStrConv.LowerCase 文字列を小文字に変換します。
>VbStrConv.ProperCase 文字列の各単語の先頭の文字を大文字に変換します。
>VbStrConv.Wide* 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。
>VbStrConv.Narrow* 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
>VbStrConv.Katakana** 文字列内のひらがなをカタカナに変換します。
>VbStrConv.Hiragana** 文字列内のカタカナをひらがなに変換します。
で、この中のどれかだと思うが、どれにでも当てはまりそうな質問内容だな。

(´-`).。oO(まず最初に607は説明力をつけるべきだと思った・・・)
0621nobodyさん2006/03/08(水) 13:40:46ID:???
ヵっぉ ぉゃっょ
0622nobodyさん2006/03/08(水) 13:54:26ID:???
ぅゎ ょぅι゙ょ っぉぃ
0623nobodyさん2006/03/08(水) 13:56:47ID:???
>>607はエスパー伊藤の降臨を待っている
ちなみにエスパー伊藤はコイツ
ttp://pukasec.sakura.ne.jp/ren/img-box/1141658595524.wmv
0624nobodyさん2006/03/08(水) 14:36:20ID:???
PHPで認証サイトを作る場合
ページ毎のログイン情報の受け渡しって
SESSIONやDBでやるのが普通?

より簡潔にできないかと思って
クラス内で配列を保持して受け渡すってのをやってみたんだけど
あまり上手くいかない・・・
0625nobodyさん2006/03/08(水) 14:57:50ID:Khyvdh2z
>>624
> クラス内で配列を保持して受け渡すってのをやってみたんだけど

クラス内でとかはあんまり関係なく、どうやって渡したのか?が問題
0626nobodyさん2006/03/08(水) 15:11:14ID:???
>>624
SESSION"を"DBでやってます。
SESSIONIDはクライアントのCOOKIEに持たせてるけどね。
0627nobodyさん2006/03/08(水) 15:30:25ID:???
>>626
というのは具体的にどういう形?
0628nobodyさん2006/03/08(水) 16:24:49ID:???
sessionIDつきのデータをDBに放り込むんだろうな。
一意性はsessionIDに頼る。
cookieが生きている限りなんとかなるのと
大きなデータの保持には適しているかな。

と、以上、まったくの推測。
0629nobodyさん2006/03/08(水) 16:49:15ID:???
指定したファイルがあるかないか調べる方法ってないでしょうか?
0630nobodyさん2006/03/08(水) 16:50:29ID:???
>>629
ありますよ
0631nobodyさん2006/03/08(水) 16:52:20ID:???
>>630
どうすればいいですか?
0632nobodyさん2006/03/08(水) 16:54:37ID:???
マニュアルくらい読んだら?
0633nobodyさん2006/03/08(水) 16:55:15ID:???
>>631
関数
file_exists
06346292006/03/08(水) 17:07:17ID:???
>>633
ありがとうございますm(_ _)m
0635nobodyさん2006/03/08(水) 17:11:17ID:???
>>631
初めからそう質問しとけばよかったんだよ。
ありませんか?→Yes / No
どうしたらいいんでしょうか?→解決法
0636nobodyさん2006/03/08(水) 19:31:10ID:???
phpの関数ってどこに保存されてるの?
ハードコーディング?
0637nobodyさん2006/03/08(水) 19:46:28ID:???
>>629
>>1くらい読めよ。読めないのか、ゴメン
0638nobodyさん2006/03/08(水) 20:00:57ID:???
>>636
日本語でOK

つかユーザ関数の話かい?
0639nobodyさん2006/03/08(水) 20:12:55ID:???
>>635
その論法もう古臭いから普通の質問スレで持ち出さなくていいよ。
揚げ足取り以上の意味持たないし面白くもない。
0640nobodyさん2006/03/08(水) 20:35:31ID:???
>>638
ユーザ関数をハードコーディングってどういうことよw
0641nobodyさん2006/03/08(水) 20:44:08ID:???
つまり一種の予知?
0642nobodyさん2006/03/08(水) 20:55:11ID:???
トーニャ ハードコーディング
0643nobodyさん2006/03/08(水) 21:13:44ID:???
>>642
靴紐でも切れたのかね?
0644nobodyさん2006/03/08(水) 21:20:02ID:???
標準の関数がどこにあるかってことじゃまいか?
0645nobodyさん2006/03/08(水) 21:49:35ID:???
libphp*.soの中にバイナリ化されているんじゃないの?詳しくは知らないけど。
0646nobodyさん2006/03/08(水) 21:59:32ID:???
>>636
普通にソース中のどこにあるかって話ならext/standardに入ってるけど
06476382006/03/08(水) 22:17:14ID:???
>>640
いや、2行目は無視をした。というより1行目も本当に訊きたいことが良く判らん
「標準や拡張の関数がハードコーディング」だって意味が判る?
0648nobodyさん2006/03/08(水) 23:12:06ID:???
俺はわかったぞい。
0649nobodyさん2006/03/08(水) 23:37:26ID:???
穴狙いで、>>648の篠沢教授に50点。
0650nobodyさん2006/03/08(水) 23:53:23ID:???
>>647
いや,君の書き込みは全部無視をした。
0651nobodyさん2006/03/08(水) 23:55:20ID:???
>>646
うちのPHPフォルダにそんなフォルダはないぞ
0652nobodyさん2006/03/09(木) 00:00:31ID:???
>>651
http://www.php.net/downloads.php
Complete Source Code
■ このスレッドは過去ログ倉庫に格納されています