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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2005/11/27(日) 00:07:12ID:eBvjdczp
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辺り
0807nobodyさん2005/12/27(火) 01:12:05ID:???
当方の環境(Pen4 3GHz 1GRAM)ではPHPの方は10秒くらいで、jspは0.3秒くらいです。
単純に考えて、演算パフォーマンスを見ればJAVA(バイトコードをキャッシュするから当然と言えば当然)なのですが、PHPの開発効率も捨て難いです。
そこで、アクセラレータの機能を実感してみたいのですが、手元に10台あったPCが全部取り押さえされて
しまって無くなってしまいました。唯一あるのがこのWinXPなのです。どなたかFreeBSDでのアクセラレータの
速度を計ってもらえないでしょうか?WinXPにはionCube PHP Acceleratorが無いのです。
長くなってしまいましたがよろしくお願い致します。
ちなみに上記素数演算のソースはWEBからパクッてきたものです。
0808nobodyさん2005/12/27(火) 01:23:40ID:???
>10台あったPCが全部取り押さえされて

何があったんだw
08098072005/12/27(火) 01:29:27ID:???
>>808
その辺はつっこまないでください。。
あぁ無事に年を越せるかどうか。。
0810nobodyさん2005/12/27(火) 01:39:49ID:???
>>807
そのWinXPにFreeBSD入れりゃいいじゃん。
俺らがどっちが速いっつっても参考になるまい。
08118072005/12/27(火) 01:43:41ID:???
>>810
あ、そっか!!その手があったか。。灯台元暗し。。
いまからパーテション切ります。
0812nobodyさん2005/12/27(火) 01:50:52ID:???
危険なアネハ
08138072005/12/27(火) 01:50:57ID:???
HDの物理ディスク量がのこり120MBしか無い。。。。
0814nobodyさん2005/12/27(火) 02:02:31ID:???
さすがにそれはロジックがダメすぎまいか...
<?php
$start = microtime(true);
$pn = array(2);
for ($i = 3; $i < 5000; $i +=2) {
foreach ($pn as $n) {
if ($i % $n == 0) {
continue 2;
}
}
$pn[] = $i;
}
$end = microtime(true);
echo implode("\n", $pn), "\n";
printf("%d prime numbers found.\n", count($pn));
printf("%0.6fsec.\n", $end - $start);
?>
microtime(true) は PHP5 限定な。
08158072005/12/27(火) 02:18:44ID:???
>>814
WEBから何も考えずパクッただけだったので申し訳ない。
>>814のロジックにしたらPHPでも0.4秒まで短縮できた。
あぁ情けない俺。ロジックで躓くなんて。。
0816nobodyさん2005/12/27(火) 02:36:56ID:???
>>807が追い込まれた理由がわかる気がする
08178072005/12/27(火) 02:41:09ID:???
>>816
俺も薄々自分で気付いてきた気がする。
0818nobodyさん2005/12/27(火) 10:50:07ID:hzIZknsD
レンタルサーバーを借りてPHPのプログラムを作ってるんですが
利用しているサーバーはGDライブラリでJPEGをサポートしていないようです。
gd
GD Support enabled
GD Version bundled (2.0.28 compatible)
GIF Read Support enabled
GIF Create Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
これをJPEGも使えるように自分でGDライブラリをインストールする事は出来ますか?
やはりサーバー管理者にお願いするしかないのでしょうか
0819nobodyさん2005/12/27(火) 10:51:34ID:???
>>818
できるかどうかそのレン鯖にきいたほうがはやいだろ
0820nobodyさん2005/12/27(火) 10:53:36ID:???
>>818
http://sugachan.dip.jp/

これ使え
0821nobodyさん2005/12/27(火) 12:39:05ID:???
jpegってライセンスが必要じゃなかったけ? gifだったかな?
0822nobodyさん2005/12/27(火) 12:45:05ID:???
>>821
gifは特許切れた
その後GIF Createが追加された
08238182005/12/27(火) 13:44:39ID:???
レン鯖から回答が来ました。
ダメみたいですね。対応検討中とか言われた。
お騒がせしまして申し訳ありませんでした。
0824nobodyさん2005/12/27(火) 18:52:39ID:???
レン鯖がGDライブラリサポートしない理由が分からん。
利点しかないだろうに
0825nobodyさん2005/12/27(火) 18:53:45ID:???
>>824
やたら主記憶を食うから。
0826nobodyさん2005/12/27(火) 19:45:26ID:???
>>824
無節操にCPUパワー食うスクリプトを入れるバカがいるから
0827nobodyさん2005/12/28(水) 00:08:12ID:???
jpgって圧縮を伴うからね。
あと訴訟対策も有るんじゃね?
0828nobodyさん2005/12/28(水) 00:34:59ID:???
ねーよ
0829nobodyさん2005/12/28(水) 00:53:05ID:???
最近PHPをやり始めたものです。
PHPでタグのセレクトボックスから選んだものを変数に格納して
それを使用したいのですが,選択した瞬間,そのセレクトボックスのフレームを読み込んで
してしまい,選んだものを初期化してしまいます。
選択したものの値を保持したいのですがどうしたらいいでしょうか?
ヒントなり頂ければ幸いです。
0830nobodyさん2005/12/28(水) 00:56:01ID:???
>>829
???
セレクトボックスのプルダウンから何か選んだ瞬間に読み込みが起きる?
HTMLの書き方そのものが間違ってない?
0831nobodyさん2005/12/28(水) 02:15:39ID:???
>>829
とりあえずヒント
<?
$no = $_REQUEST["selbox"];
?>
<html><body>
<form action="<?=$_SERVER["PHP_SELF"]?>">
<select name="selbox">
<option value="1"<?=($no==1)?" selected":""?>>1</option>
<option value="2"<?=($no==2)?" selected":""?>>2</option>
<option value="3"<?=($no==3)?" selected":""?>>3</option>
</select>
<input type=submit value="送信">
</form>
</body></html>
0832nobodyさん2005/12/28(水) 07:26:24ID:???
同じ質問ばっかり。HTMLだがテンプレに入れとけ。
08338292005/12/28(水) 08:26:53ID:???
レスありがとうございます。
曖昧で小出しな聞き方でスマソ。
PHPからのHTMLタグでセレクトボックスの中身を指定しているのでおっしゃるとうりだと思います。
やってみます。
0834nobodyさん2005/12/28(水) 09:50:13ID:OPhVlmGD
http://lowlife.jp/yasusii/stories/8.html#sample%20autodiscovery
のdiscover_tbのように対象urlからtrackback:pingを抜き出す関数を
提供しているライブラリをご存知の方いらっしゃいませんか?
blog提供側の問題で
変な方言や提供方法がありそうで在りものが在れば使いたいのですが・・・
0835nobodyさん2005/12/28(水) 09:54:29ID:???
変な方言や提供方法があるの? どこのblogよ?
0836nobodyさん2005/12/28(水) 10:21:40ID:OPhVlmGD
文がわかりにくくてすんません「ありそうで」です。無いなら無いで
どっちでも良いんですが(て自分で作るならどっちでもよくないか・・・)
0837nobodyさん2005/12/28(水) 11:54:31ID:???
>>833
君の質問は小出しなんじゃなくWebプログラムの基本を理解して無いだけ。
文章からしておかしい。
0838nobodyさん2005/12/28(水) 11:57:02ID:???
>>834
そのまま移植すればいいじゃん
0839nobodyさん2005/12/28(水) 12:59:29ID:???
ttp://jp2.php.net/ftp
FTP経由でファイルを削除したいのですが、
グッドなアイデアはないでしょうか?
ftp_exec()使うしかないですかね・・・
0840nobodyさん2005/12/28(水) 13:00:55ID:???
>>814
continue 2;
はどういう意味ですか?
08418392005/12/28(水) 13:01:02ID:???
間違えますた、削除→作成でした
0842nobodyさん2005/12/28(水) 13:12:03ID:???
>>840
実行してみ。
0843nobodyさん2005/12/28(水) 13:13:06ID:???
>>840
つ [ マニュアル ]
08448402005/12/28(水) 13:13:30ID:???
マニュアルに書いてありました、ごめんなさいorz
0845nobodyさん2005/12/28(水) 14:02:22ID:???
>>839
http://jp2.php.net/manual/ja/function.ftp-fput.php
で不満なのか?
0846nobodyさん2005/12/28(水) 18:10:36ID:jQi1GXdb
HTML_QuickFormのaddElementのコードを
HTMLから生成するスクリプトとかってないですか?
0847nobodyさん2005/12/28(水) 18:17:03ID:???
CGI化してsuexec、以外で指定したユーザ権限でコマンドを
実行させるグッドアイデアないでしょうか?
0848nobodyさん2005/12/28(水) 18:23:45ID:???
>>847
suexecって確かディレクトリ指定してあるはずだから、それ以外の場所におけば良いのでは?。
0849nobodyさん2005/12/28(水) 18:31:13ID:???
>>848
質問の意図を勘違いしてる希ガス
suexec使えば指定ユーザ権限でのコマンド実行ができるのは分かってるが、
それ以外の方法で同様の状態にする方法は無いのか?と問うてるんじゃないの?
08508472005/12/28(水) 18:34:04ID:???
>>849
そのとおりです
>>848
説明不足ですまんです
0851nobodyさん2005/12/28(水) 18:44:28ID:???
外部に公開しないhttpdをユーザ権限で動かしてリバースプロキシかますとか?
0852nobodyさん2005/12/28(水) 20:35:15ID:???
>>847
無い。あってたまるか。
0853nobodyさん2005/12/28(水) 20:51:30ID:???
safe_mode_gidとかどうなんだろう?
0854nobodyさん2005/12/28(水) 20:54:59ID:???
>>853
safe_modeはあくまでapache権限でどこまでやるかの話だからな
0855nobodyさん2005/12/28(水) 22:22:40ID:???
>>852
setuidされたラッパを用意すればもちろんできるんじゃない?
ま、グッドアイデアではないが。
0856nobodyさん2005/12/29(木) 00:21:52ID:???
どっかにユーザ権限でPHP実行させるapache拡張みたきがする
0857nobodyさん2005/12/29(木) 02:10:23ID:???
そこまでして穴あけたくないしなぁ
0858nobodyさん2005/12/29(木) 09:09:32ID:???
apache2.1にはなんか実装されるんじゃなかった?
0859nobodyさん2005/12/29(木) 10:04:20ID:???
>>858
PHP 側でその apache2 の機能の利用はまだオススメできないって
話だったはず。

諦めて cgi にして fastcgi とか使ったらいいんじゃねーのと思うけど、
自分で試したことない。
0860nobodyさん2005/12/29(木) 11:35:54ID:???
cgiにすると負荷が(w
0861nobodyさん2005/12/29(木) 12:18:37ID:???
>>859
ユーザの数だけphpのfastcgiインスタンスを走らせておくというのも
なんだかかっこわるいなぁ。

しかもsetuidされたラッパプログラムを自前で用意する羽目になるし、
なんかやだ。
0862nobodyさん2005/12/29(木) 12:53:42ID:???
CGIで動かすのが嫌ならmod_php+safe_modeでも問題ないように作るしかないっしょ。
0863nobodyさん2005/12/29(木) 18:08:20ID:???
それならJava常時起動にするね。php捨てに成る。
apacheは独自modでスルーさせるだけ。
0864nobodyさん2005/12/29(木) 19:20:49ID:???
jsp使えるレンタルサーバーって多いの?
0865nobodyさん2005/12/29(木) 19:23:06ID:???
最近はVPS多いし、自分で入れるべ
0866nobodyさん2005/12/29(木) 19:32:53ID:???
みんなそんなに鯖に金使ってるとは思えない
0867nobodyさん2005/12/29(木) 21:49:56ID:???
みんなって言われてもなぁ・・・。
必要なやつは金使ってるってだけの話じゃないのか?
0868nobodyさん2005/12/29(木) 21:59:06ID:???
早い話が軽くてユーザー権限で動くものないかって話なんじゃ?
私も前にそれ考えた事あるし
0869nobodyさん2005/12/29(木) 23:11:14ID:???
個人レベルでmod_phpをユーザー権限で動かす必要ってそう無いと思うのだけど
0870nobodyさん2005/12/29(木) 23:15:25ID:???
関係ないけど、たまに出てくるPHPやるならJavaやるっていうのは
個人で使うのみってこと?仕事では使用しないって事なのかね。
仕事だったら、小中規模案件だと圧倒的にPHP、Perlが占めるけど、Java案件以外の中規模案件なんか受注しないポリシーとか?
Java覚えられるなら、PHPなんか結構すぐに覚えられると思うけど、わざわざ捨てる理由が見つからない。
0871nobodyさん2005/12/29(木) 23:26:04ID:???
>>870
わざわざ捨ててるって言うか、java使って満足な人が
他の言語に手を出す理由が無いってだけの話でしょ。
逆もそうだし。
0872nobodyさん2005/12/29(木) 23:45:46ID:???
そもそも共有レン鯖って静的ファイルを置く所だし。
動的にページ生成したければ、占有鯖か自前鯖で弄りたい放題でしょ。
0873nobodyさん2005/12/30(金) 01:20:29ID:???
>>872
なんだその決め付け
0874nobodyさん2005/12/30(金) 01:21:34ID:???
>>871
ただphpで満足しちゃうと他に移行する時に辛いんだよなー
0875nobodyさん2005/12/30(金) 04:45:27ID:???
バージョンアップの度に動作の問題出るのに、phpに満足ってめでたいなあ。
0876nobodyさん2005/12/30(金) 05:08:43ID:???
PHPに満足してるのは長く仕事をするプロの開発者ではなく、
毛が生えた素人を大量に安く使い潰せる依頼主だから。
0877nobodyさん2005/12/30(金) 05:13:54ID:???
PHPだろうがJavaだろうが一つの言語で満足するような奴はプロとは言えん罠
0878nobodyさん2005/12/30(金) 10:33:25ID:???
Javaは満足出来るよ。新バージョンのインスコも簡単だし。OSとかCPUとか関係ない。
0879nobodyさん2005/12/30(金) 10:44:59ID:???
PHPもそのレベルじゃ大差ねーし
0880nobodyさん2005/12/30(金) 11:19:27ID:???
うざい
0881nobodyさん2005/12/30(金) 11:52:00ID:???
>>875
バージョンアップの度ってそりゃ問題出すぎだろw
どんなコーディングしてんだ
0882nobodyさん2005/12/30(金) 11:55:09ID:???
ここ最近のアップデートに限定して言えば、毎回おかしくなるmb系のバグは確かに酷かったな
0883nobodyさん2005/12/30(金) 13:24:42ID:0FfWwbS6
PHPでセレクトボックスから入力した日付で、今日より前(過去)はエラーにしたいです。
一応希望通りの動作はしてますが、かなり変ですよね?(;´Д`)
こうしろよみたいなのありましたらご教示よろしくお願いします。



$today = getdate();

if ( $today[year] > $input_year ) { error(); } // 過去はエラー
elseif ( $today[year] < $input_year ) {} // 未来はOK
// 以下同年
elseif ( $today[mon] > $input_month ) { error(); } // 過去はエラー
elseif ( $today[mon] < $input_month ) {} // 未来はOK
// 以下同月
elseif ( $today[mday] > $input_day ) { error(); } // 過去はエラー

// 存在しない日はエラー
if ( !checkdate($input_month, $input_day, $input_year) ) { error(); }
0884nobodyさん2005/12/30(金) 13:51:27ID:???
>>883
epoc値(1970/1/1からの秒数)に直して比較すれば一発。
その前に書式はチェックしないといけないけど。
0885nobodyさん2005/12/30(金) 13:57:28ID:???
>>883
年/月/日ごとに異なるエラーを出すのでないなら、
まとめてタイムスタンプの大小で現在より過去を判定した方が良いんじゃないか。
タイムスタンプの性質とmktimeの動作を確認して、自分の仕様に適うかどうかだな。

0886nobodyさん2005/12/30(金) 16:58:33ID:???
date("U")ね。
あと関係ないが連想配列[]内はクォーテーションで囲みましょう。["hoge"]
0887nobodyさん2005/12/30(金) 18:12:49ID:???
「ユーザー権限で動く」にこだわる理由はなんだろう?
それ以外の方法でもあれこれ組み合わせれば結構セキュア
(他の人のスクリプトやデータに干渉しないよう)に
できると思うんだが。
0888nobodyさん2005/12/30(金) 18:52:17ID:???
ユーザー権限なんてレン鯖以外関係ないし
0889nobodyさん2005/12/30(金) 20:53:24ID:5CV6IiV6
yahooメールのページをfopenかなんかで取得したいのですが
認証部分はどうすればよいのでしょうか?

googleで5時間探したけどわかんね。。
0890nobodyさん2005/12/30(金) 20:59:33ID:???
>>883
別に難しく考える必要はなし。
if(date("Ymd") < "{$input_year}{$input_month}{$input_day}"){
   echo 'Error!';
   exit();
}
※$input_yearは4桁西暦、$input_month $input_dayはあらかじめ2桁に整形済みのこと
0891nobodyさん2005/12/30(金) 21:05:51ID:???
こっちのがスマートやないか
$input_year.$input_month.$input_day){
0892nobodyさん2005/12/30(金) 21:13:33ID:???
>>889
どんなやり取りをしてるのかパケットスキャナ等で見ればいいんでね?
0893nobodyさん2005/12/30(金) 21:47:34ID:???
>>890-891
$input_monthや$input_dayが一桁だった場合におかしなことになるからsprintf("%04d%02d%02d",ってやらないとまずくない?

>>889
ページってことはHTTPってこと?だったらfsockopenでクッキーとかも送ってやればいいだけ。
HTTPSに関してはOpenSSLを導入する方法があったようななかったような。
あとPearにもHTTPクライアントあるし。もしくはcurl使うとか。
つーかメールだったらIMAP系の関数使ったほうが早いかもね。
0894nobodyさん2005/12/30(金) 21:50:05ID:???
>>886
なにその顔。
08958932005/12/30(金) 21:54:30ID:???
>>890
すまん。ここ読んでなかった。
> ※$input_yearは4桁西暦、$input_month $input_dayはあらかじめ2桁に整形済みのこと
0896nobodyさん2005/12/30(金) 21:54:46ID:???
>>890-891
「あらかじめ整形しておく」などの事前前提は意外とバグを産み易い。
速度的にシビアな場面じゃないのなら安全策を取った方が不慮の事故を防げるかと。
if(date("Ymd") < sprintf("%04d%02d%02d", $input_year, $input_month, $input_day)){
0897nobodyさん2005/12/30(金) 21:55:17ID:???
あら。かぶった。
0898nobodyさん2005/12/31(土) 00:25:14ID:NCoXT252
Win2k Apache2+PHP Ver4.4.1 の自宅鯖でPHPのブログ
ttp://www.netmania.jp/cgi/blog/ の#001 を動かそうと思い入れたんですけど
PHPがERRORばかり吐いて動きません。
試しに、無料のレンタル鯖にうpして動かしてみるとすんなり動きました。
鯖の設定がだめなのかPHPのスクリプトがおかしいのか・・・
宜しくお願いします。
レンタル鯖に設置したやつ[未改造]
ttp://freshgreens.jp.land.to/blog/index.php
自鯖のやつ[多少弄った]
ttp://aozoraxp.dip.jp/blog/index.php
PHPのinfo
ttp://aozoraxp.dip.jp/phpinfo.php
0899nobodyさん2005/12/31(土) 00:33:08ID:???
>>898
レン鯖においてOKならおまいのローカル環境がおかしいとしか思えないが、
エラー見るに根本的に何かが間違ってるっぽいし改造って何したのとか
わからんから何とも言いようがありません。
0900nobodyさん2005/12/31(土) 00:36:57ID:???
>>898
php.iniのerror_reportingの値がでかすぎるかも。
E_NOTICEまで有効にされちゃってる気がする。
09018982005/12/31(土) 00:38:53ID:???
改造って言うかエラー出たところを自分なりに直してみたりです。
例えばif ($_SERVER[REQUEST_METHOD] == 'POST') だとエラーでるので
’’を付け加えてif ($_SERVER['REQUEST_METHOD'] == 'POST')にしたとかです。
それ以外は特になにもしてません
09029002005/12/31(土) 00:39:58ID:???
今の値が2047だからE_ALL設定になってるね。
一般的なデフォルト値はE_ALL & ~E_NOTICEのはずなのでこれで設定してみて。
09039002005/12/31(土) 00:41:23ID:???
>>901
それはこのblogの作者が悪いわ。
09048982005/12/31(土) 00:44:58ID:???
今php.iniの設定を少し変えてみました。
error_reporting = E_ALL; display all errors, warnings and notices
この行をコメントアウト(;)してみました。
するとだいぶblogらしくなってきました。
コメントアウトじゃまずいですかね?
ほかにphp.iniの設定方法あったらご教授ください
0905nobodyさん2005/12/31(土) 00:48:01ID:???
test
09068982005/12/31(土) 00:48:37ID:???
>>902 さんの言うとおりにphp.iniの
error_reporting = E_ALL & ~E_NOTICE の;を外しておきました。
これで一般的なデフォルト値になりましたでしょうか?
09079002005/12/31(土) 00:54:41ID:???
>>906
2039になったからいーんじゃないのかな。
Windows用のphp.iniってE_ALLがデフォルトなんだろうか。
それとも4.4.0以降はE_ALLに変更されたとか?

あとなんか上に1個出てるエラーは設定項目不足みたいね。
csslistの設定が入ってないとエラーになるようだ。
なんかエラーチェックがいいかげんなプログラムだなぁ。
レス数が900を超えています。1000を超えると表示できなくなるよ。