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

【PHP】質問スレッド Part8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/14 00:52ID:???
■本家
 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
065264503/06/15 14:55ID:???
ごめん、むちゃくちゃだ。
>>650は>>646へのレスということで。

>>647
> でもここで問題になっているのは text/html の場合でせう。
そんな記述どこにもないよ。「読みこむ」だか画像を指してるとも考えられる。

0653646-64803/06/15 15:30ID:???
>>645, 650
フォロー&ご指摘感謝。

言われてみれば最終出力を Javascript か画像ファイルにすればいいだけでつね、、
認識足りなかった。勉強になりました。
0654nobodyさん03/06/15 15:50ID:???
>>651
HotScript 知りませんでした。宝の山です。
AdvancedPoll とか目的に近い感じです。

e-リサはTUNEBiZ ご謹製ですか。む〜 公開されていたら面白そうなのですが。

色々ありがとうございます。もう少し調べてみます。
0655nobodyさん03/06/15 15:59ID:???
>>640
.htmlということで、PHPスクリプトではない(にはしたくない)
と思われるので、ちょっと駄目なのだが。
PHPスクリプトからfopen()で.phpのURL指定して、取れたtext/html
とそれをパーシングして付随する<img src>の要素だけは取って、
所謂ニュースヘッダーぽいものを生成するのはやったことがある。
ころころテーブル構成変えてレイアウトを変更するサイトには無力でした…

>646
「初心者を手玉にとってアンニュイな午後の暇つぶし」イイ!
065664603/06/15 16:14ID:???
手玉に取られて勉強になりました。とか。
煽り気味に書いたので反省&感謝してるyo!
0657nobodyさん03/06/15 21:17ID:???
読み込むことは不可能だが。
<object data="index.php" type="text/html">

つーか640死ねよマジで
0658nobodyさん03/06/15 21:20ID:???
まぁ餅つけ。
質問の仕方だと思うのだけど。。無くならないね。
PHP-FAQ が Wiki ベースに移行するって聞いて楽しみに待ってるのだけどまだかーとか叫んでみるテスト。
0659nobodyさん03/06/16 06:25ID:???
Wiki( ´_ゝ`)イミワカンネ
0660nobodyさん03/06/16 20:05ID:???
変数名が同じ場合
cookieとPOSTとセッションとURLで渡された値は
どの順番でつかわれるのでしょうか?
ブラウザ・サーバーによってその順番に
かわりはあるのでしょうか?
0661nobodyさん03/06/16 20:38ID:???
>>660
variables_order
0662nobodyさん03/06/16 20:45ID:???
サンクス
EGPCSのばあい、
POSTより、Cookieのほうが優先されるという理解であってます?
0663nobodyさん03/06/16 21:06ID:???
PHPスクリプト(掲示板)のなかに、パスワード(アドミン用削除キー)
を入れているのですが、
コレ読まれないようにするために、何か対策はありますでしょうか?
それとも、何もしないでも読まれないようになっているのでしょうか?
0664nobodyさん03/06/16 21:27ID:???
へ?
066566303/06/16 21:32ID:???
スクリプトのソースが直接読まれるようなことはあるのかなぁ
と思いまして・・
0666nobodyさん03/06/16 22:06ID:???
>>663
読まれても困らないようにcrypt()したものを使うといいんじゃないかな?
0667nobodyさん03/06/17 00:28ID:oB/bpmgv
http://hogehoge.moon/japan/
というリクエストがあったときに、
http://hogehoge.moon/index.phpに/japan/を引数
として渡すような方法はありますか?
Apacheの設定をいじるというのでもアリです。
ご存じの方、さらっと教えてください!
066866303/06/17 00:33ID:???
>>667
headerでlocateを送るとか??
適当です
スマソ
0669nobodyさん03/06/17 00:48ID:oB/bpmgv
>>668
ごめんなさい、もう少し詳しく教えてくれると嬉しかったり、、、
067066703/06/17 00:49ID:oB/bpmgv
追加です。
/japan/というディレクトリは存在しないとして考えてください。
0671nobodyさん03/06/17 01:03ID:???
>>670
> /japan/というディレクトリは存在しないとして考えてください。
それじゃ、phpでってのは無理なんだけどさっ!

## Aliasの場合
Alias /japan/ /{Your Web root Directory}/
DirectoryIndex index.php

## Rewriteの場合
RewriteEngine on
RewriteRule ^/japan/$ /index.php [L]
0672nobodyさん03/06/17 01:27ID:???
>>663
パミションが644だと同鯖仲間に読まれる。
可能なら700に。(CGI)
067366703/06/17 01:28ID:oB/bpmgv
ということは、/.+/に対応するには、

## Aliasの場合
Alias /.+/ /{Your Web root Directory}/
DirectoryIndex index.php

## Rewriteの場合
RewriteEngine on
RewriteRule ^/.+/$ /index.php [L]

みたいな感じでいいのかしら?
0674nobodyさん03/06/17 01:50ID:1IJ0L4W1
phpからImageMagickのconvertを使おうと
exex()で
exec("convert -colors 128 before.jpg after.gif");
としたのと、
直接コマンドラインから
convert -colors 128 before.jpg after.gif
としたのとで、ファイルサイズが違うんです。

たぶんlzw圧縮の関係だと思うのですが、
imagemagickのconfigreはenable-lzwを付けましたし…
そもそも、同じコマンドなのにPHPのexec()と、コマンドライン直接で
なぜ結果が違うのでしょうか…

OSはLinuxで、PHPは4.3.1です。
0675nobodyさん03/06/17 09:39ID:???
>>662
そう。右の方で左の方を上書きするので、
"EGPCS"は「POSTより、Cookieのほうが優先される」でOK。
0676nobodyさん03/06/17 09:41ID:???
>>674
何らかの(シェル)環境変数が参照されてるってことはない?
067767403/06/17 11:52ID:a/p5LhFO
>>676
解決しました。
PHP Acceleratorを使っているのですが、こいつがどうやら犯人でした。
PHP Acceleratorを一度外してApache再起動後、
もう一度PHP Acceleratorを付けて再起動したらちゃんと作動するようになりました。
0678nobodyさん03/06/17 13:50ID:Z0VU+1oU
関数を実行させずに渡す方法ってありますか?
0679nobodyさん03/06/17 14:02ID:???
>>678
飛行機を使わず飛べる方法はありますか?マトリックスみたいに。
0680nobodyさん03/06/17 14:05ID:???
ってゆーか渡すって何をさ(w
0681nobodyさん03/06/17 15:42ID:???

もちろんカネだろう。身代金だな(w
068266703/06/17 17:28ID:oB/bpmgv
>>679
ってかマトリックスの中に入ればいいじゃんか。バカか?
0683nobodyさん03/06/17 19:40ID:???
おまえら少しは餅ついてください。
ボケ&ツッコミにしてもせめてもうちょっとヒネってください。
0684nobodyさん03/06/17 19:49ID:???
linuxに入ってるapacheにはデフォルトでphpが動いてしまいますが、
特定のユーザーだけ使用許可、とかできるのでしょうか?
0685nobodyさん03/06/17 21:37ID:???
>>684
Apache スレに持ち込むべき話だと思いますが… PHP 側のアプローチから何とかしろという事でつか?
0686nobodyさん03/06/17 21:37ID:???
>>685
何こいつ?PHPでhttp.confの編集すら出来ないの?
0687nobodyさん03/06/17 22:13ID:???
>>686
PHPをhttp.confを書き換えるために使うんか?わけわからん。
0688nobodyさん03/06/17 22:21ID:???
補完してみるテスツ
>>684
linux(distribution)に入っている(defaultでinstallされているRPM packageの)apacheにはデフォルトで(mod_)phpが
動いてしまいますが、特定のユーザだけに使用許可、とかできるのでしょうか?

かな。
ここは初心者スレじゃないから、質問するならせめてTarボールからinstallできる程度の知識を、身に付けてからの方がいいかもしれない。

>>685
同意

>>686
知らないなら無理して話さない方が良いと思われ。
「オマエモナー」など書くのだったら解法を書くがよろし。
0689nobodyさん03/06/17 22:25ID:???
<ユーザ>はapacheにアクセスしてきてるクライアントのことじゃなさそうだな
0690nobodyさん03/06/17 22:29ID:???
>>688
>Tarボールからinstallできる程度の知識

偉そうに言うことか?
たかが解凍して./configureしてmakeだろ?
 
0691nobodyさん03/06/17 22:33ID:???
各ユーザー毎に<directory>の中でAddTypeしてやればいいんじゃないの?
0692nobodyさん03/06/17 22:35ID:???
>690
誤読してね?
0693nobodyさん03/06/18 09:19ID:???
一気に荒れたな、、、
ヘボい質問が来たところに茶々が入っているようだけど、、ちゃんと初心者スレと住み分けすれと言いたい。
0694nobodyさん03/06/18 15:56ID:???
phpスクリプトの中の、TDタグでWIDTH=”80”と指定して、そこに半角英数字を80
ピクセル以上書くと折り返し表示してくれなく、80ピクセル以上に
テーブルが伸びてしまいます。
全角文字や半角カナ文字は80ピクセル以上だと自動改行してくれるのに
半角英数字だと改行してくれないのはなぜなのでしょうか?
また、改行できる方法を知ってる方がいましたら教えてください。
0695nobodyさん03/06/18 16:05ID:???
         ナ ゝ   ナ ゝ /    十_"    ー;=‐         |! |!   
          cト    cト /^、_ノ  | 、.__ つ  (.__    ̄ ̄ ̄ ̄   ・ ・   
            ,. -─- 、._               ,. -─v─- 、       _
            ,. ‐'´      `‐、          , ‐'´        `‐、, ‐''´~   `´ ̄`‐、
       /           ヽ、_/)ノ   <         ヽ‐'´            `‐、
      /     / ̄~`'''‐- 、.._   ノ   ≦         ≦               ヽ
      i.    /          ̄l 7    1  イ/l/|ヘ ヽヘ ≦   , ,ヘ 、           i
      ,!ヘ. / ‐- 、._   u    |/  / ̄l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、       |
.      |〃、!ミ:   -─ゝ、    __ .l /  ...レ二ヽ、 、__∠´_ |/ | ! |  | ヾ ヾヘト、    !
      !_ヒ;    L(.:)_ `ー'"〈:)_,` /.|\  riヽ_(:)_i  '_(:)_/ ! ‐;-、   、__,._-─‐ヽ. ,.-i、
      /`゙i u       ´    ヽ  !..|(・)  !{   ,!   `   ( } ' (:)〉  ´(:.)~ヽ  |//ニ !
    _/:::::::!             ,,..ゝ!...|⊂⌒.゙!   ヽ '      i゙!  7     ̄     | トy'/
_,,. -‐ヘ::::::::::::::ヽ、    r'´~`''‐、  /....| |||||||||!、  ‐=ニ⊃   / !  `ヽ"    u    i-‐i
 !    \::::::::::::::ヽ   `ー─ ' /  ......\ ヘ_ ..ヽ  ‐-  /  ヽ  ` ̄二)      /ヽト、
 i、     \:::::::::::::::..、  ~" /    .........\__..ヽ.__,./   //ヽ、 ー         / ゝ
 .! \     `‐、.    `ー:--'´       ./  .//イ;;:::::    //〃 \   __,. ‐' ./ / \
  ヽ \     \   /       ..⊂ (    ./  /i:::::.   //      ̄ i::::  / /
0696nobodyさん03/06/18 16:14ID:???
>>694
「phpスクリプトの中」
こじつけ過ぎ。
html系のスレに逝って来たら?
0697nobodyさん03/06/18 17:11ID:???
HTML の問題も、ポストが赤いのも、ほぼ日公式カップ麺が売れないのも全て PHP のせいです。って感じのスレ違い多すぎ。

単純な TABLE で色々試して実験すれ。
っていうかそれくらいやってから質問とセットで報告しる!

試してみたがズレるね、確かに。
テーブルはデザインのための要素ぢゃないからこれでいいと思う&記述が足りないだけな気がしなくもないがな。
という事で DIV 要素を使ってみたら単語やブラウザの改行コントロールに優先して幅が制御できたyo!
取り敢えずテーブル内に DIV 入れて制御しといたらどうよ。

っていうか平日昼間から何を言ってる。趣味ならともかくカネもらってコード書いていいレベルじゃないぞ。せめて初心者スレでやってくれ。
またスレ違いに答えちまったよ、、、鬱だ。
0698nobodyさん03/06/18 18:23ID:???
perlスレでも見かけたぞ。
http://pc2.2ch.net/test/read.cgi/php/1054992610/566
069969703/06/18 18:28ID:???
最悪… 確信犯の上にマルチポストかよ。質問以前の質問にはもう二度と答えねぇよ。
0700nobodyさん03/06/19 01:32ID:???
>>694
これかもね。知らんけど。
ttp://www5e.biglobe.ne.jp/~access_r/hp/css/css_text_013.html
0701nobodyさん03/06/20 15:52ID:gE9xicSF
変数内に"tako ika"と文字列の間に空白がたくさんあるのですが、
これを"tako ika"というように、空白を一つにしたい場合はどうすれば
いいでしょうか。文字列関数をみたのですが、trimだと外側しかできない
のでどうすればいいか困っています。
よろしくお願いします。
0702nobodyさん03/06/20 16:42ID:???
RTFM
正規表現使うよろし。
0703コピペしようぜ!!03/06/20 17:01ID:???
早稲田大SuperFree強姦事件のまとめページ
http://www.memorize.ne.jp/diary/06/93147/
早稲田大レイプ魔晒し上げ画像
http://tmp.2chan.net/img2/src/1056025506230.jpg
http://oosaka52.hp.infoseek.co.jp/cgi-bin/img/586.jpg
早稲田大レイプ魔晒し上げフラッシュ
http://cstrike-inr.mine.nu/SuperFree/waseda.swf
070470103/06/20 17:01ID:fyrZFBPo
すいません、こちらのほうを呼んでみたのですが、
http://jp.php.net/manual/ja/ref.regex.php

ereg_replaceを使えばいいのはわかりますが、
複数の空白をどのように指定すればよいのでしょうか?
0705山�ア渉(^^) 03/06/20 17:34ID:???
>>701

function removeSpaces ($str) {
if (preg_match("/\s{2}/",$str) {
$str = preg_replace("/\s{2}/"," ",$str);
removeSpaces($str);
} else {
return $str;
}

という関数を定義して,

$str = "tako  ika  ikura"; /* 実際は複数スペース,ココでは複数スペースは表示されないので全角スペースを使用 */
$str = removeSpaces($str);
echo $str;
そうすると
tako ika ikura
と表示される
0706山�ア渉(^^) 03/06/20 17:38ID:???
ごめん,
str = preg_replace("/\s+/"," ",$str);
でよかった
0707nobodyさん03/06/20 22:36ID:???
すいません。PHPが4.3.2になったんですが、どうやってインストールするんでしょう?^^;
今は4.3.1をインストしていますが、それはできたんですよね。
インストーラーパッケージをダウンして、実行してウィザード出て
とんとん拍子で進んだんですが、4.3.1と比べて出来たファイルの数が少なくて不安です
インストーラパッケージを解凍?するフォルダを、4.3.1のフォルダに指定してやればいいんですかね?
PHPが実行できなくなるの怖くて出来ていないままなんです( ´Д⊂ヽ
0708nobodyさん03/06/20 22:41ID:???
おい、環境とかかかんの?
0709nobodyさん03/06/20 22:46ID:???
まーWinだとは思うけどねぇ
そしてCGI版だとは思うねぇ

これを気にもづーる版に移行汁( ゚д゚)
0710nobodyさん03/06/20 22:47ID:???
WinXPです。httpdてソフト使ってます。
CGI版なのかな?よくわかんないんですが( ´Д⊂ヽ
0711nobodyさん03/06/20 22:59ID:???
初心者板とこのスレの住み分けって一体…
0712nobodyさん03/06/20 23:03ID:???
あほな質問は初心者板いけ
http://pc2.2ch.net/test/read.cgi/php/1055280252/l50
0713nobodyさん03/06/20 23:27ID:???
>>710
とにかくやってみろ。失敗してもべんきょうになるから。
0714nobodyさん03/06/21 00:26ID:???
指定したページから、リンクURLとそれを張られた文字列を取得したいんです。
ページに含まれる全ての<a href="URL">文字列</a>から「URL」と「文字列」を
取り出すにはどうすればいいんでしょうか?

正規表現のところできいたほうがいいんでしょうか?
0715nobodyさん03/06/21 00:34ID:???
>>714
そうだね。
0716山�ア渉(^^) 03/06/21 00:43ID:???
>>714
ファイルを開いて,一行ずつ
if (preg_match("/<a href=\"([^\"]+)\">([^<]+)</a>/",$str,$match)) {
$hoge[] = array($match[1],$match[2]);
}
したら,$hogeに2次元配列でURIと文字列が入っている
071771403/06/21 00:45ID:???
>>715-716
レスありがとうございます

それだったら途中で改行されてた場合に対応できないですよね
0718nobodyさん03/06/21 00:55ID:???
>>717
array_reduceとwhile。
implodeしてからwhile。
071971403/06/21 01:30ID:???
>>718
ありがとうございます
一度くっつけて</a>(でいいのかな?)で配列に分けて
>>716ってな感じですね
0720nobodyさん03/06/21 01:38ID:???
初心者版あるんだからさ、、、、、、、、、、
072171403/06/21 01:44ID:???
>>720
やっぱり、初心者の方がよかったですか
以後、気を付けます
ちなみに>>719は微妙に違ってますね
0722nobodyさん03/06/21 14:44ID:k+R30mgd
海外サーバでmbstring使うためには
何て頼めばいいんでしょうか??
phpinfo 見せてもらったところ、入ってないんですが、

Bear in mind that any module that you required can be enabled by our
support staff.

という返事が。
プログラミングに詳しくて、かつ英語ができる人いますか〜〜?
誰か教えてください〜〜。お願いします。
0723_03/06/21 14:49ID:???
http://homepage.mac.com/hiroyuki44/
0724山�ア渉(^^) 03/06/21 15:10ID:???
>>722
mbstringもモジュール入れてくれ」って言えばいいんでわ?
0725nobodyさん03/06/21 15:11ID:???
使いたいモジュールがあればスタッフに言えって書いてある。
よくそんなんで海外のサーバ借りようなんて思ったね。
別解だけど、mbstring.phpなんてものがある。
072672203/06/21 16:04ID:cPsEdkH0
>>723-724
レスありがとうございます(_ _)。
もちろん英語の意味は分かるんですが、
ただ、英語でmbstringとかどんな風に伝えればいいのかが分からないんです。
海外さばでPHP使う場合に気をつけなければならないのは
multibyteだと思うんですが、
要は、mbstring入れてもらえば解決するんでしょうか??

0727nobodyさん03/06/21 16:08ID:???
>>726
日本語から勉強しよう。
言いたいことがさっぱりわからないよ。
もう一回丁寧にレスしなおしてみて。
072872203/06/21 16:08ID:cPsEdkH0
間違えた、>>724-725でした。
あと、このmbstringを入れてもらうのって、
頼むだけで大丈夫ですかね。
どこどこからダウンロードできますよ、みたいなこと
言わなきゃいけないでしょうか??

聞いてばかりですいません汗
072972203/06/21 16:13ID:cPsEdkH0
も一度言い直します汗。
英語はわかるんです。英語は。
ただ、日本語でも伝えるのが難しいような内容を
英語で伝えようとするとちょっと訳がわからないんです。
つまり、英語は分かるんですが、プログラム関係の用語が
分からないんです。PHPを最近覚えはじめたばかりなんで。

で、
Bear in mind that any module that you required can be enabled by our
support staff.
という返事をもらったんで、これに対して、
「どんな返事を返せば、mbstringを入れてもらえるのか」
が聞きたかったわけです。


073072203/06/21 16:17ID:cPsEdkH0
まだ分かりにくいですね泣。
http://pc2.2ch.net/test/read.cgi/hosting/1053846039/77-
このスレの69が私です。
0731nobodyさん03/06/21 16:20ID:???
phpマニュアルのmbstring部分のURIでも一緒につけてやればいいんでないの?
0732nobodyさん03/06/21 16:32ID:???
なるほど。
multibyte使えるか?って聞いたんだ。
Multi-Byte String Functions は使えるか? って聞けば即解決だったのかも。
>>731のやり方が一番よく伝わると思うよ。
0733nobodyさん03/06/21 16:38ID:???
マルチバイトのモジュールを組み込む=mbstringを組み込む
ってこと??
0734nobodyさん03/06/21 16:42ID:???
>>703
>http://oosaka52.hp.infoseek.co.jp/cgi-bin/img/586.jpg

スレ違いだが、一人だけ妙に浮いててワラタ
サブってやつ
0735nobodyさん03/06/21 17:18ID:???
この前 PHP 質問スレッド行ったんですよ、質問スレッド。
そしたらなんか >>722 のつけたレスがめちゃくちゃ並んでて
で、よく見たらなんか 「海外さばでマルチバイト系モジュールが使いたい」 とか書いてあるんです。
もうね、アホかと、馬鹿かと。
>>722 な、マルチバイト系モジュールの組み込みごとき FAQ で初心者スレ飛ばして質問スレに来てんじゃねーよ、ボケが。
mbstring だよ、mbstring。
で、やっと読み進んだと思ったら
「英語はわかるんです。英語は。」とか逆切れしてる。そこでまたブチ切れですよ。
あのな、情報も整理せず連続書き込みなんて今日び流行んねーんだよ。ボケが。
お前はちゃんと他も参考に質問文を推敲したのか、技術系メーリングリストで質問するときのパターン・ランゲージくらい読んだのかと
ちゃんとググったのかと、問いたい、問い詰めたい、小一時間問い詰めたい。
サーバーの環境くらい書けよ。
PHP 初心者の俺から言わせてもらえば今、適当な解決方法はやっぱり、
何故それが必要なのかを記してググって拾ったマルチバイト系モジュールの有効化方法を英訳してメール
これだね。
ローカルでレンタルサーバーと同じ環境をたてて実働で試してみるともっといい。これ、最強。
しかし自分で ./configure した経験も無く英語も下手だと相手に情報が正しく伝わらないかも知れない諸刃の剣。
素人にはおすすめ出来ない。
それに内部エンコーディングや入出力での日本語の有効化とマルチバイト系モジュールaの有効化は別で
日本語の有効化も PHP のバージョンによって ./configure が異なってくるのだが
ちゃんとググれば出てくる。 php.ini も何を変えればいいか自分で調べて ini_set しろよ。
まあ >>722 のように自分で海外鯖選んだくせに自己解決能力も持てないならxrea.comでも使ってなさいってこった。
0736山�ア渉(^^) 03/06/21 17:25ID:???
>>735
75点くらいかな
0737nobodyさん03/06/21 17:47ID:???
>>735
xreaの宣伝鵜財
0738nobodyさん03/06/21 17:49ID:???
( ゚д゚)オット!くやしい>>722が名前変えて反撃してるのでしょうか?
0739nobodyさん03/06/21 17:59ID:???
終わった話題に突っかかったり煽ったりして、無意味なレス増やしてどうすんだ?>>738
初心者質問な上に長引いたのがウザイと感じたんだろうけど、自分で引っ張ってたら
いーみなーいじゃーん。

突っ込むのは話題が進行してるときだけにしとき。
0740nobodyさん03/06/21 19:40ID:???
>735
単純な煽りだけかと思ったら、ソコソコな指摘だな。
ただ件のパターンは、折れもPHPのマルチバイト系のパッチに関して
説明するのに苦労したからなんとなく判る。
configureオプション、php.iniの設定変更とかのレベルや
本家にパッチ上がってれば説明はしやすいんだけど。

サポート担当者っても所詮アプリユーザの立場であって、
別に開発者じゃないからね。まして特定アプリケーションの動向を
細かく追ってる訳でもないし。
0741nobodyさん03/06/21 20:18ID:???
モジュールの名前が mbstring なんだから
mbstring 入れてくれ!でいいんじゃないの?

鯖の管理者がまともなら

I need mbstring module in PHP!!

とかで十分伝わると思うが・・・どうだろ?
0742nobodyさん03/06/22 02:58ID:???
PHPのバージョンあげたらPOST,GETの値の取得方法が変わってて焦った…
0743nobodyさん03/06/22 07:49ID:???
>>742
一体どれだけ挙げたんだ(;´Д`)?
0744 03/06/22 09:05ID:ilPAHc5W
PHPでメモリを使いすぎるとセグメンテーション違反で落ちますか?
PHP4のコマンドライン版で、ある再帰処理があるPHPスクリプトを動かしているのですが、
セグメンテーション違反で落ちます。
実際にセグメンテーション違反がどのような状況で発生するのかわからないので、
(Cならば確保されてないメモリなどにアクセスすると発生しますよね?そもそもPHPで
そのようなコードが書けるのかも疑問なんですが)なんともいえないのですが、相当量メモリ
(TOPでみると30M強くらい)くってるのでそれが原因なのか?とも思うんですが。

一般論としてPHPでセグメンテーション違反が起こるのはどのような状況でしょうか?
OSはLinuxです。
0745 03/06/22 09:13ID:ilPAHc5W
>>744
すいません。
メモリの使いすぎは無いみたいです。
適当なテストプログラムで800Mとか900Mまで余裕で確保できたので・・・・
30Mくらいでダメになるはずないですね。

とりあえず
>一般論としてPHPでセグメンテーション違反が起こるのはどのような状況でしょうか?
これが知りたいです。
0746nobodyさん03/06/22 09:22ID:???
>>744
再帰処理、セグメンテーション違反と聞けば真っ先にスタックオーバーフロウを考えるけれど、
PHPでも起こりうるかどうかは分からない。
0747_03/06/22 09:38ID:???
http://homepage.mac.com/hiroyuki44/
074872203/06/22 10:05ID:???
一時期荒れる原因を作っちゃいすいません。
最後に一つだけ質問お願いします汗。
結局、聞いたら、
mbstring はデフォルトで可能です、
と返事が着たんですが、
phpinfo見ても、mb やmbstringって文字列は存在
しないんですが・・・。
これってどういうことでしょうか?
074973503/06/22 10:34ID:???
>>748
if(!function_exists('mb_substr')) die('mbstring not available')
とか自分で検証スクリプト書いてサポートに証明すれ。

どういう事情があってか知らないが多分価格性能比から海外鯖を選んだのだろうが
この辺りにかかっている労力を考えると国内鯖か日本語サポート付き海外鯖を選んだ方が早いと思われ。
吉野屋したのはそーいうこった。
0750nobodyさん03/06/22 10:38ID:???
>>749
荒らしたことについての謝罪は?
0751 03/06/22 10:58ID:ilPAHc5W
>>746
ありがとうございます!!!!!正にそれでした!!!
スタックオーヴァーフローの可能性を全然考えていませんでした。
とりあえず、下記のようなスクリプトで
<?php
 set_time_limit(0);
 $i = 0;
 r2a();
 exit();

function r2a(){
 global $i;
 $i++;
 
 while(1){
  echo $i."\n";
  r2a();
 }
}
?>
試してみると18706回でセグメンテーション違反がでました。
とりあえず、PHPでも関数の呼び出しすぎでスタックオーバーフローするみたいです。
有難うございました。
■ このスレッドは過去ログ倉庫に格納されています