【PHP】質問スレッドPart3
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
02/02/17 13:23ID:N+9Uw5dE答えられる方、返答よろしくお願いします。
<<参考リンク>>
■本家
http://www.php.net/
■PHP日本語マニュアル
http://www.php.net/manual/ja/
■JapanPHPUsersGroup
http://www.php.gr.jp/
■PHP日本語ページ
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
■Pearのドキュメント
http://phpdocu.sourceforge.net/peardocs/
<<過去スレ>>
■【PHP】質問スレッドPart1
http://ebi.2ch.net/test/read.cgi/php/982687820/
■【PHP】質問スレッドPart2
http://pc.2ch.net/test/read.cgi/php/1003283567/
<<教えて君>>
■ここ見習って書き込んじゃ、駄目よ
http://pc.2ch.net/test/read.cgi/unix/1011345180/242-245
0522nobodyさん
02/04/09 22:06ID:???マニュアル読め〜
http://jp2.php.net/manual/ja/language.variables.predefined.php
0523nobodyさん
02/04/09 23:45ID:v8USxwZsphpinfo();を参考に環境変数を取って、
GETでPerlに渡せばどうよ?
0524nobodyさん
02/04/10 00:52ID:QeMF+ULcなんとか日本語表示のときだけ\がでないようにしたいのですが、どうしたらいいのでしょうか?
0525nobodyさん
02/04/10 01:34ID:???0526nobodyさん
02/04/10 01:40ID:???通常なら
htmlspecialchars($text,ENT_QUOTES)
のみで十分かと
DB使うなら
addslashes()ではなくstr_replace()を使ってはいかがか?
それと文字コードはどうなってる?
0527nobodyさん
02/04/10 16:35ID:i95Gvoeh掲示板を作っているのですが、設定をiniファイルに保存しているので
それを読み出す際、
$iniData = file($iniFileName);
で一気に配列に読み込んでから
for($i = 0; $i < count($iniData); $i++){
$iniData[$i] = str_replace("\r\n", "\r", $drnArray[$i]);
$iniData[$i] = str_replace("\r", "\n", $drnArray[$i]);
$iniData[$i] = str_replace("\n", "", $drnArray[$i]);
}
ってやって改行コードを切ってるんですが、
配列の中に「\」があると「\\」となり、
「表」っていう文字があると「表\」となっちゃいます。
原因すらわからないので、助けてください。
0528527
02/04/10 16:37ID:???for($i = 0; $i < count($iniData); $i++){
$iniData[$i] = str_replace("\r\n", "\r", $iniData[$i]);
$iniData[$i] = str_replace("\r", "\n", $iniData[$i]);
$iniData[$i] = str_replace("\n", "", $iniData[$i]);
}
str_replaceの引数コピペ間違い。
0529nobodyさん
02/04/10 23:20ID:???bbb \t い \t 2
ccc \t う \t 1
aaa \t あ \t 2
bbb \t い \t 2
ccc \t う \t 3
このような中身のファイルがあり、一番左の項目が重複する時にまとめて
数字だけは足したい場合は、どのようにすればよいでしょうか。
aaa \t あ \t 3
bbb \t い \t 4
ccc \t う \t 4
こうしたいです。
0530apacheuserさん
02/04/10 23:52ID:???タブ区切りのCSVってことでいいのかな。
一番左が一致してるときに真中の値はどうするかは
よくわからんけど、とりあえず普通にハッシュ使えば?
0532nobodyさん
02/04/11 01:24ID:0YnZBQoeソースは
------------------------------------------
<?
Header( "Content-type: image/gif"); /* 出力がGIFファイルであることを示す */
$font_num = 4; /* フォントの種類 */
/* PHP3では1以上の数にfontを割り当てることができる。 */
/* 1〜4までは、PHP3に組込まれたBitmapfontが使用される。*/
/* でも、日本語は使えない(;;) */
/* 全体の作画範囲の決定 size_xが水平方向 size_yが垂直方向 */
$size_x = strlen($write_word)*imageFontWidth($font_num)*2;
$size_y = imageFontHeight($font_num)*2;
/* 文字列の作画位置の開始座標の決定 */
$write_x = ($size_x - strlen($write_word)*imageFontWidth($font_num))/2;
$write_y = ($size_y - imageFontHeight($font_num))/2;
/* 空のimageの作成を行なう。*/
$im = ImageCreate($size_x, $size_y);
/* imageのbackgroundの色を作成する。*/
$bgcolor=ImageColorAllocate($im,(int)$bg_red,(int)$bg_green,(int)$bg_blue);
/* imageのforegroundの色を作成する。*/
$fgcolor=ImageColorAllocate($im,(int)$fg_red,(int)$fg_green,(int)$fg_blue);
ImageFill($im ,$size_x, $size_y, $bgcolor);
ImageString($im,$font_num,$write_x, $write_y, "$write_word",$fgcolor);
ImageGif($im); /* imageをGIFとして出力する。 */
ImageDestory($im); /* imageを破棄する。*/
?>
-----------------------------------------------
なんですが、自分のとこで実行すると、
<br>
<b>Fatal error</b>: Call to undefined function: imagefontwidth() in <b>/home/majihima/public_html/test.php</b> on line <b>25</b><br>
と出てしまいます。
どこを改造したらうまく実行できるのか教えていただけないでしょうか。
よろしくお願いいたします。
0534527
02/04/11 10:02ID:???EUCで保存しなおしたら、「表」が「表\」になるのは
直ったみたい。嬉。
でも「\」は「\\」になっちゃうなぁ。
ちなみに改行コードって、今までCR+LFだったのを
LFのみにしたんですが、実際どれにすればよいのか
まったくわかりません。
0535527
02/04/11 10:05ID:Qk43qoJGプログラム(phpファイル)をEUCで書けば、そのプログラムが
生成するファイルもEUCになるんでしょうか?
0536Grips ◆ZEplUyt2
02/04/11 11:42ID:s9L3xhCGどうもデータベースが作成されていないようなんです。
どうやったらデータベースが作成できるでしょうか?
0538Grips ◆ZEplUyt2
02/04/11 14:14ID:s9L3xhCGがダメであれば、せめてMySQLのダンプをPHP上で実行する方法を誰か分かる人がいるのであれば教えてください。
分からなくて困っています。
0539nobodyさん
02/04/11 14:52ID:???たいていのフリーホスティング系はユーザにDBを作成する権限を与えてない。
ユーザ名のDBが1コだけ提供される。spaceport.comもそのはず。
>>538
phpMyAdminを入れるってのは?
バックアップファイルも直接流せる。
0540527
02/04/11 15:06ID:Qk43qoJGなるほど。みっけました。
さらに質問なんですが、掲示板等でタグを使われないために、
"とか<とか>をエスケープさせたいんですが、
ほかにもやっといたほうがいい文字ってどんなのありますかね
0542Grips ◆ZEplUyt2
02/04/11 20:04ID:STOJDdM0ありがとう!
解決できました!
nobodyさんの知識にカンパーイ!
0543nobodyさん
02/04/11 22:55ID:99F5CMsa返答ありがとうございます。
すいません。GDが入っているかどうかというのはどうやったらわかるのでしょうか。
UNIXあんまりわからないもので、、、。
一生懸命調べていますが、ヒントを教えていただければありがたいです
0544nobodyさん
02/04/12 00:05ID:???マニュアルのイメージ関数の項を見れ
0545nobodyさん
02/04/12 00:11ID:???出てくるはず。出なければ GD なし。
0546527
02/04/12 10:41ID:8K23hqg+この二つってどう違うんでしょうか?
マニュアルにはhtmlspecialcharsは「&」「"」「'」「<」「>」を
変換するって書いてあるんですが、
htmlentitiesのほうは何をどう変換するのかぜんぜんかいてません。
すべての文字ってことなんですかね?
ちなみにこれは、たとえば掲示板だとすると、
書き込まれた瞬間に変換してログファイルに保存するときは
変換済みで保存するべきなのか、それともとりあえず
書き込まれたとおりに保存しておいて、表示する段階で
変換するべきなのか、どっちでしょ?
0547nobodyさん
02/04/12 10:45ID:???別な方法でコッソリ(ユーザーにどんな値を渡してるか秘密で)
渡すことってできますか?
0549547
02/04/12 12:24ID:???いるかなーと思いまして。
POSTでhiddenって初めて聞きます。調べてみます。
これはクッキーがオフだったりいろいろこまめにセキュリティ関係を
いじってる人でもちゃんと送ってくれるんでしょうか?
暗号化。これもいいですね。もしPOSTがだめならこっちを
考えてみます。
ありがとうございます。
0550nobodyさん
02/04/12 12:54ID:???0551547
02/04/12 12:57ID:???いいってことですか?どうりで探しても出てこなかったワケです。
phpっていうよりむしろhtmlだったんですかね。
ありがとうございます。今から試してみます。
0553nobodyさん
02/04/12 14:34ID:???ただし、hiddenだとHTMLのソース見られると渡している値が
わかっちゃうけどね。
まあ、HTMLを知らない人には全然わからないだろうから、
その程度の隠し方でいいならhiddenが一番簡単じゃないかな。
0554547
02/04/12 14:56ID:???しかもこれはこのhtmlをローカルに保存してhtml書き換えれば
送る値を自分でコントロールできるってことだよね?
どーしよっかなぁ。まあでもURLに出るよりは数倍いいか。
暗号化はめんどいんで、この方法で逝ってみます。
0555547
02/04/12 14:59ID:???これって<form>にいれるってことは、当然submitボタンで
ページ間を移動するってこと?リンク(a href)では
値を渡せないですよね?
まいったなぁ。
暗号化か・・・。
0556nobodyさん
02/04/12 15:16ID:???0557547
02/04/12 15:25ID:???急いで調べてみたけど、かなり使えそう。
$_SESSION[]こういう配列になるってことですかね?これは。
[]の中に好きな数字なり言葉なりをいれて。
セッションIDってのは使い捨てでいいんですか?
定義や開放は必要ですか?
unset()ってのがあったんですが、これやらないと
すごい負荷になったりするんでしょうか?
0558547
02/04/12 15:54ID:???なんだかエラーになります。
Warning: open(/tmp\sess_2ccfb96834bdeca3e99dac8180555afb, O_RDWR) failed: No such file or directory (2)
これって?ていうか↑こんなファイルあるわけないのに。
0559nobodyさん
02/04/12 18:09ID:???脊髄反射書き込みはんたーい。
0560nobodyさん
02/04/12 20:09ID:???このpathが存在しないものになっている可能性があります。
または [PHP-users 6265] Win版 $_SESSION が使えない
で、「Sessionモジュールがtrack varsを登録する方法に問題が
あるためにこの不具合が発生します。」
と書いてあるのでそれかも。
どーでもいいけど、4.1.1以前は穴があるので
4.1.2にしたほうが良いと思ふ。
0561nobodyさん
02/04/13 15:48ID:???0562529
02/04/14 02:45ID:???どうしても上書きできるところまでしか行けません。
aaa \t 1
bbb \t 2
ccc \t 1
aaa \t 2
bbb \t 2
ccc \t 3
これでやっても
aaa \t 2
bbb \t 2
ccc \t 3
ここまでしかできません。
aaa \t 3
bbb \t 4
ccc \t 4
こうならないですかね。
0563nobodyさん
02/04/14 03:04ID:???でもやりたいのは代入じゃなくて足し算でしょ。だったら足し算しなさい。$a += 5
0564nobodyさん
02/04/14 14:47ID:OSF8kSUVどなたかご存じないですか?
使用したいのが、個人的な趣味のサイトなので自宅鯖や専鯖は
予算的に無理なもので・・・
0565nobodyさん
02/04/14 15:17ID:???0566nobodyさん
02/04/14 15:58ID:???PHPを使ってるとバレたくないからです。
何故バレたくないのか書け。
やましいことをするからです。
0567nobodyさん
02/04/14 16:37ID:???負荷高くなるから普通やってないと思われ・・・。
0568nobodyさん
02/04/14 20:49ID:???html すべてをPHP で処理するより負荷は低いんだよもん。
<Files hoge.html>
ForceType application/x-httpd-php
</Files>
0569nobodyさん
02/04/15 00:11ID:???for foreach whileの使用を禁止します。
0570564
02/04/15 12:17ID:???ありがとうね!
とりあえず「index.html」だけでもPHPが使えれば
助かります。
>>566
するどいですね。
やましい事というか、確かに真面目な目的で
PHPを使ったページを作るわけではなかったので・・・
でも、PHPって面白いですね。
初めてのWebプログラミングですがホント面白いサイト作りが
できる。
0571nobodyさん
02/04/15 21:51ID:m/DrIwmVJavaScriptでクッキーを取得するとどうしても文字化けしてしまいます。
誰かこの現象について知っている方いませんか?
0572nobodyさん
02/04/16 11:05ID:knkJqIPnPerlもPHPもとくに変わらない気がするのですが
Perlに比べてどこら辺が簡単なんでしょうか?
0573nobodyさん
02/04/16 12:03ID:???2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数:102115人 発行日:2002/03/12
どもども、人格障害者のひろゆきですー。
今日は重大なお知らせがありますですー。
これまで2chでは、企業に対する真偽の曖昧な書き込みは削除しませんでしたが、これからは削除依頼が出たら一旦全て削除して、その真偽をおいらが責任を持って調査し、真実であると確信した時点で改めて復帰させ公開することにしましたですー。。。
これまでは企業に対して、書き込みの内容が嘘であることを「証明してみろ」という傲慢な態度を示してきましたが、これからはおいらが書き込みの内容が真実であることを証明してから大衆の目に触れさせることにしますですー、、、
いやぁ、よく考えると始めからこうするのが当然だったのかも知れませんねー。。。
ちなみに最近はDHCの裁判の模様をお伝えしてますが、それも話半分で聞いていてくださいー、、、
おいらは相手側の主張の極一部を抜き取って、自分の都合の良いように歪曲して報告してますが、その前後の話も含めれば本当は全く違う状況なんですよー、、、えぇえぇ、、、
おいらってば本当に卑劣な人間なんですよー。。。
向こうの弁護士さんも相当に怒っていると思いますですー。。。
ついでに言っておきますが、DHCの件もこれまでと同様に旗色が悪くなったら報告するのを止めますので予めご了承くださいですー、、、
本当は結果まで全て真実を報告して、もし削除するよう決定がくだれば、相手側の企業に対する謝罪のひとつでも掲載するべきなんですよねー。。。
おいらってば人格障害者なもんで許して欲しいですー。。。
んじゃ!
0576nobodyさん
02/04/16 13:34ID:???簡単ってよく言われる割には、Perlみたいに自作スクリプト配布してる人
少ないよね。(国内限定で)
もうたいていの鯖でPHPは動かせるし、Perlよりも設置は簡単だと思うんだけどなぁ。
(/usr/bin/perlのパスを変更する手間が無いから、
初心者が躓く原因を一つだけ減らせる)
0578nobodyさん
02/04/16 18:23ID:???perlだと
$hoge =~ /(\S+)\s+(.+)/;
print "$1 : $2";
って書いてたもの、phpだとどんな風に記述するんでしょうか?
eregで\Sとかにマッチしなくて泣きそうです。
0579nobodyさん
02/04/16 18:24ID:A/BDgF1b>もうたいていの鯖でPHPは動かせるし
そうか?半分くらいのような感覚なんだけど。
あと、データベースが使えるところはさらに少ない。
DB連携できないならPerlでも十分だしね。
負荷の問題はあるけれども。
http://jp.php.net/manual/ja/ref.pcre.php
この辺じゃだめなの?
>575
あと、PHPはWebに使うこと前提で作られてるから、
Web関係扱うのに役に立つ関数群が充実してる。
htmlspecialcharsやtrimとか。
0581nobodyさん
02/04/16 18:40ID:???ありがとうございました。
0582nobodyさん
02/04/16 21:01ID:???$this->str とか $this->method() ってしなきゃいけないの?
0583nobodyさん
02/04/16 22:07ID:???そのとっつきやすさって結構重要だよ。しかもperlより
WEB向きなんだし。〜より簡単なのって優れた事なんじゃないの?
何かプライドでもあるのかプログラマってのはよくわからん。
実際Cやってた人間から見ると圧倒的にPHPの方がとっつきやすい。
Perlからクソめんどくさい事抜いたらPHPになったって感じなんだけどなあ。
とりあえず、自分的にはヘッダ関係考えなくていいだけで
PHP楽だ〜って思ったよ・・・。
超遅レスだけど。
>446
どうやら、CGI版PHPじゃないと<STDIN>(だったかな?
が空になってる模様。
CGIとして動作してるPHPなら出来そうという意見が。
0585nobodyさん
02/04/17 02:17ID:???1ページ目が.htmlの掲示板で、それをやろうとしたけど
できなくて、諦めたよ。
NNでは化けないけど、IEだと化けたような覚えがある。
0586nobodyさん
02/04/17 16:09ID:???Fatal error: Failed to initialize session module
って初期化に失敗するんだけど、これって何故?
MLの過去ログに同じ現象の人見つけたけど、誰もレスして無かったよ。
phpinfo見ると、sessionは有効になってるんだけどなぁ。
0588nobodyさん
02/04/17 20:29ID:???ereg&mktimeでやるしかないのか。
0589588
02/04/17 20:30ID:???0590nobodyさん
02/04/18 03:34ID:IMuTE+9JWindows版 php4.1.2 + IIS 4 on NT な環境です。
スクリプトの中で、そのスクリプトを実行するユーザー毎に
8文字位のパスワードを生成したいのですが、Win環境な為、
crypt() 関数が使えません。
とりあえず md5() の結果の頭8文字を取ってきてパスワードと
しているのですが、結果が16進数なので数字ばかりであまり
好きではありません。ユーザーID毎のパスワードなのでダブっても
いいのですが、できればアルファベット26文字+数字の組み合わせを
パスワードとしたいのです。
Win環境で簡単にランダムな英数字の文字列を生成する方法はないでしょうか。
0591588
02/04/18 10:11ID:???0592nobodyさん
02/04/18 12:17ID:8LmMiEMyphp.iniの設定は以下の通りです。
------------------------------------------------------------
mbstring.detect_order ----- auto
mbstring.http_input ----- auto
mbstring.http_output ----- pass
mbstring.internal_encoding ----- EUC-JP
mbstring.substitute_character ----- no value
------------------------------------------------------------
フォームを置いているindex.phpはEUCです。
そこから呼び出してメール送信させるmail.phpの中身もEUCです。
なのに、
メール本文のうち、
・index.phpで入力した日本語(value)
・mail.phpの中に書き込んでる日本語(<値一覧>みたいな日本語>
が文字化けしてしまいます。
なお、index.phpの<input type="text" name="なまえ" value="">
とある「なまえ」の文字は、正常にメールに表示されてます。
なぜなのでしょうか?お教えいただければ幸いです。
0593nobodyさん
02/04/18 17:29ID:4lmPxRyS//まず変数がこのようにあるとします。
$aaa1 = "A";
$aaa2 = "B";
$aaa3 = "C";
//●2
//画面に出力
echo"$aaa1<BR>\n";
echo"$aaa2<BR>\n";
echo"$aaa3<BR>\n";
↓
■結果
A
B
C
===================================================
初歩的な事で申し訳ないのですが以下の質問があります。
===================================================
●2の部分で、1つづず「echo」で出力するのではなく
「for」等で出力するには、
for($i=1; $i<=3; $i++){
echo"$aaa$i<BR>\n";
}
のように考えたのですが、うまく ■結果 のようには出来ません。
どのようにすればうまく表示できるのでしょうか?
よろしくお願いします。
0594590
02/04/18 19:11ID:IMuTE+9Jそれって、どのようにして変換すればよいのでしょうか?
ソースをご教授いただけると助かります。
0595nobodyさん
02/04/18 19:54ID:???http://www.php.net/manual/ja/language.variables.variable.php
0597nobodyさん
02/04/18 20:11ID:???0598590
02/04/18 21:20ID:IMuTE+9J$password = substr( base_convert( md5($string), 16, 36 ) , 0, 8 );
0599nobodyさん
02/04/18 22:33ID:???未だに成功しないので、質問させて下さい。
perlアクセス解析cgiをPHPから動かしたいのですが、
systemで引数?(GET?)が渡せません。
system("/home/user/www/cgi-bin/hoge/stat.cgi?LOG=index") はダメです。
LOG=indexの渡し方を知ってるかたいますか?
0601nobodyさん
02/04/18 23:09ID:???env QUERY_STRING=LOG=index /home/user/www/cgi-bin/hoge/stat.cgi
一時期、もっと楽しかったんだけどなぁ・・・。
そういえば、PHP4.2.0RC4どうなん?
流石に他の人に貸してる環境に入れることも出来ず
様子見してるんだけど。
0603592
02/04/19 00:03ID:bxirOF7Z「Content-Type: text/plain; charset=iso-2022-jp」のことですよね。
つけてなかったのでつけたのですが、そしたら本文が全部文字化けしてしまいました。
(半角かなばっかり。これってどういう化けかたでしたっけ???)
なお、サブジェクトは正常に日本語が表示されてます。
($subject = mb_encode_mimeheader("EMAIl FROM どこそこ"); としてます)
あと言い忘れましたが(すみません)、FreeBSD 4.2 で、PHP4.0.6 です。
0604nobodyさん
02/04/19 00:06ID:???EUCで渡してるならcharsetをEUC-JPにしないと。
俺は
http://www.spencernetwork.org/
を使ってタイトル、ヘッダ、本文を全部iso-2022-jpに変換してやってる。
0605592=603
02/04/19 00:58ID:stB036rzありがとうございます。とりあえず自分も、http://www.spencernetwork.org/ を使って動きました。
ただ疑問なのが、別のサーバ(RedHat6とPHP3)で、
mail($Mailto,i18n_mime_header_encode("さぶじぇくと"),"にほんご")
ってだけで(このphpファイルはEUC)、ちゃんとJISのメールが送られて、
しかも、「Content-Type: text/plain; charset=iso-2022-jp」が付いている例が
あるんですよ。
だから、とくに文字コードを意識しなくても前述のようにメールが送れると今まで思いこんでいて。。。
この別のサーバで正常に送れているのは、PHPでなく、Sendmailか何か別の設定のせいなんでしょうか・・・?
そのPHP3って、国際化バージョンでは?
文字コードの自動認識とかは、PHP3のが強かった気がする。
PHP4でやるなら、明示的に指定したほうが事故ないですよ〜。
0607nobodyさん
02/04/19 09:11ID:???お返事ありがとうございます。色々試しましたが、うまくいっておりません。
include("env QUERY_STRING=LOG=index /home/user/www/cgi-bin/hoge/stat.cgi"); //ダメ
こんなこともやってみましたが、ダメでした。
system("QUERY_STRING=LOG=index"):
system("export QUERY_STRING");
system('/home/user/www/cgi-bin/hoge/stat.cgi"); // エラーとなる。
ちなみに、上記表示で見えたところでは、サーバはLinuxでシェルは、bashです。(telnet不可)
他に stat.cgi にQUERY_STRINGを渡す方法はあるでしょうか?
0608nobodyさん
02/04/19 09:56ID:3KXoKyNvhttp://pc.2ch.net/test/read.cgi/php/983250751/209-213
から飛んできました。
Apache + mod_php を使っています。
データベースにアクセスするパスワードなんかをスクリプトに埋め込んで、
そのスクリプトを他のユーザに詠まれないようにしたい、ということです。
CGI なら suExec で user=www ( or nobody) => user=ore に
権限を変更できるので、パーミッション 600 で OK なんですが、
モジュールの場合は user = www ( or nobody) のままなので
600 にはできないです。
結局
safe_mode = on
safe_mode_exec_dir = "."
open_basedir , doc_root を適切に設定。
を適切に設定することで何とかなりそうかな、ということだったんですが、
それでもパスワードを含むスクリプトを 600 にはできないですよね?
となると、ssh とかでログインして作業している他のユーザには
読まれてしまうわけで……
まだあんまりやったことないですが PHP を CGI として動かそうかな、とか。
0609nobodyさん
02/04/19 10:17ID:???>system('/home/user/www/cgi-bin/hoge/stat.cgi"); // エラーとなる。
これそのままコピーしてきた奴?
だとしたら、「""」でちゃんと閉じてないよ。最初の方が「'」になってる。
あと、
http://www.itboost.co.jp/php/php_05.phpに説明がある
system("/home/your/bgprog $arg1 $arg2 > /dev/null &");
ではダメ?
0610すえぐぜく?
02/04/19 11:40ID:3KXoKyNvfilenotfound404error@yahoo.com
24-Mar-2002 12:09
If you install PHP as a CGI (http://www.php.net/manual/en/security.cgi-bin.php)
and then set up Apache with suexec enabled (http://httpd.apache.org/docs/suexec.html),
you can set your PHP scripts' permissions to 700, thereby making it more
difficult for other users of the system to get at your MySQL passwords. I
like this setup anyway, because under it a user's script runs with the
user's ID. Scripts thus inherit the user's permissions and can read and
write files without setting the files' permissions so as to open the files
up to other users -- handy for the user and the sysop, from a security
point of view.
Sure, running PHP as a CGI isn't as efficient as running it as an Apache
module (according to my informal benchmarks, the former setup can only
handle about one third as many concurrent users as the latter), but for
many people, the added security is worth the performance trade off.
いや、やりたかったのは Xoops っていう PHP ベースのポータルサイト構築
ツールを使いたかったんですが、その config.php ファイルに MySQL への
接続パスワードを書くようになってるので、パーミッションを 600 にしたい、
ということだったんです。
んが、さっき CGI として Xoops を動かしてみようとすると、動かなかった……
0611nobodyさん
02/04/19 12:29ID:3oF7V8+Fソースの書き換えが大量に発生する予感
とdev側でアナウンスされたというのはマジ?
前に日本語MLでちらっと話が出てたのだけど、気になって
JSPに移行しようかと悩む今日この頃
>>610
パスワードを返すところだけ、PHP以外を使うというのはどう?
マジかと。
で、PHP-dev ML.JPでは
<?php version="5.0"
?>
という風にバージョンわけ出来るように話して見ます?
みたいな事が投稿されてました。
まあ、PHP4とPHP5を一緒にインストール出来るように
なっていれば、そこまで問題ならないような気もするけど・・・。
php.iniでPHP4 or PHP5というのをディレクトリ別に
設定できるとうれしいかも。
0613nobodyさん
02/04/19 14:37ID:3oF7V8+F>設定できるとうれしいかも。
うちもうれしいかも
鯖管が新しい物好きという困った状況の時
拡張子phpをphp4にする作業がなくなるかも
0614nobodyさん
02/04/19 15:22ID:uydc7dr5たとえば、
$a=1;
while($a < 5){
$a++;
$wari=5+$a;
echo $wari;
}
というようなプログラムでこの$wariを
値が6のときは$wari1、値が7のときは$wari2・・・みたいに
名前を自動的に変えたいのですが。
いい方法を知っていらっしゃる方がいたら是非ご教授お願います。
ちなみに、実際作っているプログラムでの$wariの値はデータベ
ースの検索結果を当てています。
0615nobodyさん
02/04/19 15:25ID:uydc7dr5>while($a < 5){
ここの5という数字は適当です。
今書いてるプログラムではここに当てはまる数字がいくつでも対応する
ようにしなければいけないです。
すいませんが、よろしくお願いします。
0616nobodyさん
02/04/19 19:11ID:Kja3u5oC0617nobodyさん
02/04/19 23:05ID:???「いちおうdevloper」な立場から言わせて頂くと、
versionディレクティブが採用される確立は0に
等しいです。良いアイデアだとは思いますが。
ただ、4->5のスクリプトコンバータは作成される
可能性があります。
i18n関連はこれから実装されるでしょう。ただ、
なんとなくな方向性が決まっているだけなので
どうなるかはまだ分かりません。
>それでもパスワードを含むスクリプトを 600 にはできないですよね?
別にソース内にパスワードを書く必要は無いでしょ。
PHPでパスワードファイルを作成し、パーミッションを 600にします。
パスワード作成のPHPは削除します。(これを覗かれたら意味無い)
パスワードファイルの所有者は www (apacheのUser 以下wwwと表記),パーミッションは 600 になるので、
www 若しくは root 以外では開く事は出来ません。
CGIはsuexecにより、www以外のユーザで動くようにします。
これで www もしくは root 以外ではパスワードファイルは覗けない事になります。
しかしこのままでは他人のPHPから覗けることになるので、safe_mode等で制限するのです。
# ポイントは「PHPでパスワードファイルを作成」です。
# PHPで作成したファイルは所有者が www なのでパーミッションを600にしてもPHPから読み込めます。
# また、CGI、SSHなどでは読み込めなくなります。
## ローカルでパスワードファイルを作ってFTP/SSHでログインしてvi等でパスワードファイルを作成
## では所有者がwwwでは無いのでパーミッションを600にするとPHPからパスワードを読み込めなくなります。
わざわざパスワードファイル作成用のPHP作らないといけないし、パスワードファイルの
削除もPHPから行わないといけないし結構面倒です。
# けど、コマンドライン版PHPでCGIとして動かすぐらいならPHP止めて、Perl使うな俺は。
##(あくまで個人的にはです。理由は色々。)
suexecに対応すればそれが一番簡単なんですけどね。PHP5で対応してくれないかなぁ。
0619nobodyさん
02/04/19 23:40ID:???>設定できるとうれしいかも。
php.iniでは無くhttpd.confや.htaccessの範疇だと思いますが。
うーん、そうなんだ。
残念。
コンバータはどうなんだろう・・・。
結局手直しがかなりいりそうな予感も。
>618
suexec(またはそれに変わる何か)には対応してほしいね。
そのあたり、話にでてるのかなぁ・・・。
英語MLは読んでないから、情報ほしいところ。
>619
あー、そうっスね。
ディレクトリ別の設定ならphp_valueか。
■ このスレッドは過去ログ倉庫に格納されています