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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん04/06/14 14:36ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 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


抜けているものがあったら補足願います
0867名無し募集中。。。04/07/11 21:56ID:/oo9N7Gm
コンパイル結果をメモリにキャッシュする無料ソフトって
どれが一番いいの?
0868カポコン04/07/11 22:50ID:???
【北海道】<?=鈴木?>@<?=ムネオ?>【不死鳥】
0869nobodyさん04/07/11 22:59ID:???
> コンパイル結果をメモリにキャッシュする無料ソフト

そんなもの存在しません。終了。
0870nobodyさん04/07/11 23:03ID:???
>>867はいったい何を言ってるんだ?
0871nobodyさん04/07/11 23:20ID:???
>>867
性能で言うならAPC, PHPA, MMCacheの中ではMMCacheが良いと思う。
対応しているアーキテクチャも多いし。
ただ現在は開発が停止中なので最新のPHPと組み合わせて使うにはちょっと不安がある。
まれにスクリプトを更新したとき期待通りに動かなくなって、
/tmp/mmcahe-*を削除したら直ったりするので。
開発再開を期待して待ちましょう。

>>869,870
知らないなら余計なことは言わない方が...
0872nobodyさん04/07/11 23:21ID:???
いや、意図はくみ取れるけどな、、
釣りか?
いっそ PHP 自体使うなと言いたい。
0873nobodyさん04/07/11 23:24ID:???
>>871
それ全部ライセンスで 「無料」 でなければならないとは定められていない。

メモリ上に直接キャッシングを行うのって、MMCache だけだと思ってたけど、
APCやPHPAもそうなの?
0874nobodyさん04/07/12 00:49ID:qiJhhqFo
これだろ?
http://www.stackasterisk.jp/tech/php/apc01_01.jsp
0875nobodyさん04/07/12 05:45ID:Q0IoRcBp
ヒアドキュメントで複数行表示したいのですが、うまくいきません。

<?php
print <<<EOF
古池や
蛙飛び込む
水の音
EOF;
?>


このソースで 古池や蛙飛び込む水の音  と一行につながって表示されてしまいます。
どの変が間違っているのでしょうか。php4.3.7です。
0876nobodyさん04/07/12 06:49ID:c+JkP+le
$aryCnt=file("./".$datname[$l],1);
print($aryCnt[1]);

の出力結果が
2 test2 title2 degree2 2004 7 10 23 40 mail2 home2 1 0 1 test2 uchi-mmkmldegej

なのですがこの文字列に対して
list($num[$j],$name[$j],$title[$i],$degree[$j],$year[$j],$month[$j],$day[$j],$hour[$j],$minute[$j],$mail[$j],$url[$j],$mem[$j],$lang[$j],$br[$j],$text[$j],$host[$j],$browser[$j])

=explode("\r",$aryCnt[1]);

以上の処理でここの変数に値を格納したいと考えているのですが何故かうまくいきません。

ファイルへの書き込み形式は
fputs($fl,$Cntary,$Cntarylen);
fputs($fl,"\r",2);
fputs($fl,$name,$namelen);
fputs($fl,"\r",2);
fputs($fl,$title,$titlelen);
fputs($fl,"\r",2);
fputs($fl,$degree,$degreelen);
fputs($fl,"\r",2);
・・・・・


出力結果は以下のとおりです。
print(count($title));        →1
print_r(array_values($title));  →Array ( [0] => )

どこに問題があるかご教示ください。よろしくお願いします。

0877nobodyさん04/07/12 08:17ID:???
>>875
ブラウザ出力のソースを表示させると、改行されてませんか?
textとして改行していても htmlとして解釈した場合には改行されません。
0878nobodyさん04/07/12 10:20ID:ntR1QL+F
<input type='text' name='hoge' value='foo1'>
<input type='text' name='hoge' value='foo2'>

 一つのフォームで同じnameの値をPOSTでCGIに渡すと、受け取った値には
'foo1 foo2'と入ります。
 これを<textarea>内に表示させてると'foo1 foo2'が表示されますが、
コピー&ペーストをすると'foo1'だけしかペーストされません。
 foo1とfoo2の間に区切り文字が入っているのでしょうか?
 これを一つの値としたいのですが妙案がありましたらご教授ください。
087987804/07/12 10:31ID:???
すみません。
散々調べた後に質問したのですが、検索を続けていたら解決方法を見つけました。
区切りに\0が入って値が渡されることを見つけました。
お騒がせしました。
0880nobodyさん04/07/12 14:57ID:???
>>876
fputsで、長さを指定するのをやめろ。
0881nobodyさん04/07/12 15:13ID:???
>>877
875です。その通りでした。ありがとうございました。
0882nobodyさん04/07/12 18:57ID:sEDp1Uf0
copy関数を使ってファイルをアップロードしたいのですが
日本語名のファイルが化けてしまいます。
日本語を使う方法ってなにかありませんでしょうか?
0883nobodyさん04/07/12 19:03ID:???
copy関数を使ってファイルのアップロードってどうやってやるんですか?
0884nobodyさん04/07/12 19:22ID:???
http://www.xored.com/download.phpからダウンロードできないよー!
xws-core-0.3.4.zipがほしいのですがどこに落ちてますか?
ぐぐっても落ちてません。
0885nobodyさん04/07/12 19:33ID:c+JkP+le
>880
fput長さ指定なしにしましたが何も変わりませんでした・・・・
0886Imo ◆.jC7ANgFY. 04/07/13 00:14ID:???
>>885
$title[$i],
$jの間違いでしょ?
0887nobodyさん04/07/13 02:37ID:AiceQq3q
プログラミング初心者です。
formから入力したマルチバイト文字のデータをphpにとおすとき、
shift_jisの場合は、0x5cの関係で文字化けが発生してしまいますよね。
そのため、euc-jpでformに入力する必要があると思うのですが、
最終的には shift-jis でデータを送りたいのです。
この場合、一体どのような方法を取ればいいのでしょうか?
euc-jpでform入力後、jcode.php 等でeuc-jpからshift-jisに
変換するというのが一般的な方法なのでしょうか?
他に方法はありますでしょうか?

よろしくお願いしますm(__)m
0888nobodyさん04/07/13 03:03ID:???
>>887
http://jp.php.net/manual/ja/ref.mbstring.php
0889nobodyさん04/07/13 04:38ID:???
>>887
・mb_convert_encoding関数による方法
・jcode.phpを使う方法
・mb_output_handler関数による方法
・mbstring.http_outputの設定で行う方法

それぞれの利点/欠点を比較して採用を考えましょう。
0890nobodyさん04/07/13 08:57ID:???
> プログラミング初心者です。
こういう余計な前置きは嫌われるからヤメロ
0891nobodyさん04/07/13 10:58ID:???
>>890
自治?
0892nobodyさん04/07/13 11:39ID:???
>>890
ゴトータン、乙。
0893nobodyさん04/07/13 11:43ID:???
ひろゆきじゃないのか?
0894nobodyさん04/07/13 14:02ID:???
>894
ラム爺タソ、乙。
0895nobodyさん04/07/13 14:34ID:???
自作自演?
0896nobodyさん04/07/13 14:34ID:???
>>884
0.3.4 なら eclips のプラグインマネージャから直でインストール出来た気がする (うろ覚え
そっちからなら取れるかも知れないし、まぁ試してみては。
0897 ◆Vmtd5Gm/qU 04/07/13 16:25ID:???
>>887
文字化けっていうのが表示が表\示となるようなものなのなら
stripslashesを通せばよろし。
変換については>889にあるとおりどぞ。
0898nobodyさん04/07/13 21:25ID:???
アップロードされた画像をサムネイル化してDBに格納するスクリプトを
作ろうとしているところなのですが、
画像をDBに格納する際に、いったんファイルとして
保存しなければならない点が何となくいやなので
できればそのまま直接DBに格納したいと思っているのですが、
方法がよくわかりません。
どなたか教えてくだされ。
0899nobodyさん04/07/13 21:44ID:???
>>898
そのDBとやらに聞いてみたまへ
0900nobodyさん04/07/14 01:08ID:???
>>898
普通にバイナリで突っ込んでくださいッ!
残念ッ!
0901nobodyさん04/07/14 05:11ID:???
つか逆にDBに直でぶち込む方がなんか嫌じゃね?
0902nobodyさん04/07/14 09:50ID:???
画像なんてDBで管理する意味あるの?
画像ディレクトリ作ってファイル名だけDBへ格納すりゃいいじゃん
0903nobodyさん04/07/14 10:20ID:???
xoopsモジュールとして配布するため、
画像ディレクトリを作ろうとすると
ユーザーに対してパーミッションの変更など
よけいな操作を強いることになります。
したがって、画像をDBで管理したいと考えています。
0904nobodyさん04/07/14 10:31ID:???
DBにぶちこむならPostgreSQLのラージオブジェクトとか
そのへん使わないといけないなぁ。
ラージオブジェクト使うと色々と面倒なことが起きる場合があるから
>>902のように普通に保存するようにすればいいと思うよ。
0905nobodyさん04/07/14 10:53ID:???
ob_start()
ob_get_contents()
ob_clear()
でできました。
0906nobodyさん04/07/14 14:33ID:???
報告するレベルのことかよ
0907nobodyさん04/07/14 14:33ID:???
画像をDBに登録したかったらbase64エンコードしてからDBに流し込みなさい
0908nobodyさん04/07/14 15:09ID:k/PvMH0M
touch("./log".$datcountr.".dat",mktime());
chmod("./log".$datcountr.".dat",0777);
fopen("./log".$datcountr.".dat","a+");
//fputs("./log".$datcountr.".dat","\r\n");


上記のファイル作成から書き込みの流れでfputs部をコメントアウトするとエラーは出ませんが
コメント外すとエラーが出ます

ファイル作成まではできているのでパスの指定が間違っているわけではなさそうなのですが
よろしくお願いいたします。
0909nobodyさん04/07/14 15:21ID:???
>>908
fputsの行を穴が空く程よく見ろ
0910nobodyさん04/07/14 15:22ID:???
つうか最低限のエラーメッサゲを見せろよ
とりあえずfopenで拾ったハンドルをfputsのリソースとして使ってみなさい


$handle = fopen("./log".$datc(略
fputs($handle,"\r(略

こんな具合に。


参考までに
http://www.php.net/manual/ja/function.fputs.php
0911nobodyさん04/07/14 15:22ID:???
間違えた

fputsの行とマニュアルのfputsのページを穴が空く程よく見ろ
0912nobodyさん04/07/14 15:33ID:???
PHPを勉強しようと思うのですが、やはり自宅にサーバを持たないと
無理なのでしょうか?目標はデータベースとのやり取りを考えています
0913nobodyさん04/07/14 15:37ID:???
テスト環境は自前であったほうがいいね
最終的にレンタルサーバかなにか知らないけど、他人に迷惑かける環境でのテストは感心しない
0914nobodyさん04/07/14 15:39ID:???
>>913
やはりそうなのですか・・。困った。
現在プロバイダスペースしか持っていません。
0915nobodyさん04/07/14 15:41ID:???
winでもmacosxでもテスト環境は用意できるよ
0916nobodyさん04/07/14 15:42ID:???
>912
やってほしくないのは、
-全世界に公開しているサーバーでテストすること。
-共用サーバーでテストすること。
理由は自分で考えて。

別にサーバーに特化したマシンが無くてもテストはできる。
とりあえず、手元のマシンに PHP と httpd をインストールしてみたらどうか。
勉強するには十分。
0917nobodyさん04/07/14 15:47ID:???
>>916
意図せずテスト環境が全世界に大公開されてるってのはありがち
0918nobodyさん04/07/14 15:49ID:???
>>915-916
以前手元のマシンにPHP(最新版)をインストールしたところ
特定のサイトでPHPの初期画面(?)が表示されるようになり
閲覧が出来なくなってしまったんです。
その際は確か簡単にインストールが出来るという、パッケージを使いました。

それからPHPは専用のサーバが無いと無理なのかと考えてしまってたんです。
もう少し調べてみようと思います。ありがとうございました。
0919nobodyさん04/07/14 15:54ID:???
>>918
PHPマニュアルのインストールの項を熟読しろ
http://www.php.net/manual/ja/getting-started.php
0920nobodyさん04/07/14 17:06ID:???
>>918
> 特定のサイトでPHPの初期画面(?)が表示されるようになり
> 閲覧が出来なくなってしまったんです。

ん?もうちょっと分かりやすく書いてくれ
0921nobodyさん04/07/14 17:48ID:tmsEgaLN
>>866
こういう命令を見ると、
ああ、phpって本当にキモイなぁ
と思う。

HTTPリクエストによるファイルの取得を
ファイルのコピー風にするなボケ言語。
0922nobodyさん04/07/14 18:01ID:???
>>921
こういうカキコを見ると、
ああ、アンチphpユーザって本当にキモイなぁ
と思う。

ファイル空間をHTTPまで拡張して一元化・隠蔽しただけなのに
利便性などのメリットを語らずキモイとかゆうな似非原理主義者。
0923nobodyさん04/07/14 18:08ID:???
ファイルやアドレスなどを一元化して透過的に使えるのが良いんだよ。
嫌ならそんなロジックにしなければ問題ない。
0924カポンコ04/07/14 18:15ID:???
どうしたどうした!
質問は無いのかー!!
0925nobodyさん04/07/14 18:18ID:???
pearってどう? 安定した?
0926nobodyさん04/07/14 18:20ID:???
PHP5.0.0がリリースされたのになんで誰も騒いでないの?
0927nobodyさん04/07/14 18:22ID:???
人柱の体験談待ち
0928nobodyさん04/07/14 18:27ID:???
*.0.0っていうバージョンは実用するにゃ怖いわなぁ
0929nobodyさん04/07/14 18:43ID:???
PHP5ってPHP-ファイブって言えばいいの?
0930nobodyさん04/07/14 18:48ID:VoMOFkAb
掲示板のスクリプトで、入力フォーム<textarea>の表示部分で、レスの引用なんだけど

>あいうえお
>かきくけこ

って表示させて、実際にログに記録するときは

<blockquote>あいうえお<br />かきくけこ</blockquote>新規入力文章ほにゃらら

とさせるのは無理矢理なんとか出来るのですが、

>>あいうえお
>>かきくけこ
>新規入力文章ほにゃらら

と引用部分が、どんどん入れ子状態になると出来ません。
なにか良いアイデアないでしょうか?
0931nobodyさん04/07/14 18:52ID:???
1行ずつ>を入れてやりゃいいじゃん
0932nobodyさん04/07/14 18:54ID:???
>>930
ログに保存する時は

>>あいうえお
>>かきくけこ
>新規入力文章ほにゃらら

のままにして、htmlに展開する時に行頭の>を頼りに、
タグをくっつけていくのが賢いと思います。
0933nobodyさん04/07/14 18:55ID:???
>
0934nobodyさん04/07/14 18:59ID:0gUuBq5C
>>930
スタイルシート使えば?
0935nobodyさん04/07/14 19:01ID:???
PHP5が使えるレンタル鯖を俺にだけこっそり教えれ
0936nobodyさん04/07/14 19:19ID:???
>>935
自分で立てた方が早いと思う
0937nobodyさん04/07/14 19:22ID:???
そんなにPHP5って魅力あるか?
0938nobodyさん04/07/14 20:29ID:???
そんなにないね。しばらく様子見
そんなことより4.3.8が
093993004/07/14 22:01ID:???
>>932
アドバイスの通り、ログ保存は
>>>第一の引用>>>改行で続く>>第二の引用>第一の引用>改行で続く
みないな書式で、表示時に
<blockquote>
 <blockquote>
  <blockquote>
   第一の引用<br />
   改行で続く
  </blockquote>
  第二の引用
 </blockquote>
 第一の引用<br />
 改行で続く
</blockquote>
としようとしたのですが、どうしても</blockquote>で閉じることが出来ません orz
0940nobodyさん04/07/14 23:06ID:???
>>939
どういうアルゴリズムでやってるのか分からんけど、
再帰を使ってみてはどうか?
094193004/07/15 01:52ID:???
これでなんとか出来ました。凄く簡単な事でした。スレ汚しすいません。
$value = "> > > てすと\n> > > 開業ですわ\n> > 2段目\n> 1段目";
$value_array = explode("\n",$value);
$flag = 0;
foreach($value_array as $value_line){
 if(preg_match_all("/> /m",$value_line,$match)){
  $match_num = count($match[0]);
  if($flag == 0){
   $line = substr($value_line,$match_num*2);
   for($i=0;$i<$match_num;$i++){
    $msg .= "<blockquote>";
   }
   $msg .= $line;
   $flag = 1;
   $match_num_oya = $match_num;
  }elseif($flag == 1 && $match_num == $match_num_oya){
   $line = substr($value_line,$match_num*2);
   $msg .= "<br>" . $line;
  }elseif($flag == 1 && $match_num < $match_num_oya){
   $line = substr($value_line,$match_num*2);
   $msg .= "</blockquote>" . $line;
   $match_num_oya = $match_num;
  }
 }
}
$msg .= "</blockquote>";
0942nobodyさん04/07/15 05:11ID:???
コード読んでないけどとりあえず無駄なことしてるってのは伝わったよ
0943nobodyさん04/07/15 07:37ID:???
うごけば
0944nobodyさん04/07/15 09:02ID:???
PHP5は面白そうだが。デストラクタ搭載とかありがたいな。
0945nobodyさん04/07/15 10:01ID:???
使う前から文句言ってる奴って救えない
使ってから文句イエーイ
0946 ◆.jC7ANgFY. 04/07/15 10:14ID:???
>>941
私のもはりつけてみましょっかね。
昨日はろうとしたらアク禁でorz
0947nobodyさん04/07/15 10:20ID:???
php5のrpm作ってみたのですがインストールしようとすると、
php4が邪魔だぁ!!と文句を言われます;;
共存させる事は出来ないのでしょうか?
0948 ◆.jC7ANgFY. 04/07/15 10:32ID:???
改行を消したり入れたりして見やすいように変更してください。

$value = ">>> てすと\n>>> 開業ですわ\n>> 2段目\n> 1段目";
echo block_quote($value);

function block_quote($v) { bq_match(); $v =
preg_replace_callback('/^(>*)(.*)$/m', 'bq_match', $v);
return str_replace("\n", '<br>', $v . bq_match()); }
function bq_match($m = false) { static $i; $i2 = $i;
return str_repeat('<' . (0 < ($i = strlen($m[1])) -
$i2 ? '' : '/') . 'blockquote>', abs($i - $i2)) . $m[2]; }
094993004/07/15 14:27ID:???
>>948
ありがとうございます。
これを使って、さらに勉強しようと思います。
ぱっと見、全然理解出来てないですがorz
0950nobodyさん04/07/15 15:05ID:???
PHP 4.1.1 から 4.3.8 にアップデートしたら
pg_connect が動作しなくなった
マニュアル見たら 引数が変ってる

なんてこったい _| ̄|○
0951nobodyさん04/07/15 15:15ID:???
DBのラッパークラスみたいなので管理してたらそんな変更は屁みたいなもんでそ。
0952nobodyさん04/07/15 15:18ID:???
なにー?
4.3.8または5.0.0にバージョンアップするかmemory_limit機能を無効にしろだと?
うちは4.2系だから辛いなぁ・・・
ここは漢らしく一発memory_limit OFFでいくか?
誰か俺もmemory_limitで対処するぜっという仲間はいない?←と同志を募るあたり女々しい
0953nobodyさん04/07/15 17:08ID:???
>>951
DB関係の変更だけで済むのならいいんだが、順次対処していって、どつぼにはまるのは嫌嫌嫌嫌

>>952
> うちは4.2系だから辛いなぁ・・・
4.1系のおいらは もっと辛い
> ここは漢らしく一発memory_limit OFFでいくか?
うーむ・・・
0954nobodyさん04/07/15 17:17ID:IpnLix62
バージョンうpって普通に上書きするだけでいいんだっけ?
ちなみにPHPバージョンは4.3.7
削除してインストールし直さなきゃならないなら5.0.0にしようかな
0955nobodyさん04/07/15 17:53ID:At3KjVK/
>>954
make dist
make cleandist
した後に普通に上書きしていけば良いよ。
Linuxの話だが。
0956nobodyさん04/07/15 17:57ID:IpnLix62
>>955
すいません
Windowsの話でした_| ̄|○
0957nobodyさん04/07/15 18:51ID:???
>>956
windowsバイナリなら漏れはいつも上書きしてる
今まで問題起こったこと無いから多分大丈夫だ
ってか、削除後に上書きでも対して面倒じゃない気がするが
0958nobodyさん04/07/15 19:19ID:IpnLix62
>>957
d!
アパッチのサーバーモニターのバージョン表示では4.3.8になってるけど…
<?php phpinfo(); ?>で表示した画面のバージョンはまだ4.3.7…
う〜ん…アパッチでは4.3.8と認識してるからこのままでいいのかな
0959nobodyさん04/07/15 19:21ID:???
つーか鯖アプリ入れ替えの際にOSを再インストールすれば調子よくなるのがWindowsの特徴だな
0960カポ04/07/15 19:52ID:???
net stop apache
net start apache

コレで十分だろ
0961nobodyさん04/07/15 19:55ID:IpnLix62
>>960
もちろんやりましたよ…
っていうか上書きはサーバーストップしないとできなかったですし
0962nobodyさん04/07/15 20:57ID:+fR0HFAV
画像ファイルをアップロードする前に一度
プレビュー画面を表示させたいのですが
どうすればよいのでしょうか?
0963nobodyさん04/07/15 21:03ID:???
>>962
どう考えてもムリだろ
サーバにアップロードされなくてはPHPから手の出しようがない
どうしてもというならJavaか何かでクライアントサイド処理の話で板違い
0964nobodyさん04/07/15 22:20ID:???
PHPで独自ドメイン検索窓ってどうやってできますか?
checkdnsrrですかね?
使い方おしえてください
よろしくおねがいします
0965nobodyさん04/07/15 22:29ID:???
「"独自ドメイン検索窓"に該当するページが見つかりませんでした」 _| ̄|○
ちょっと待ってね、考えてみる。
096696404/07/15 22:33ID:???
>>965
ありがとうですっ
レス数が950を超えています。1000を超えると書き込みができなくなります。