【php】part29【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/07/06(水) 09:57:54ID:0DucnAyH・新規質問の方は上げてください。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-10辺り
前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ
0336nobodyさん
2005/08/30(火) 00:26:44ID:???>普通にfputsなどでできませんでした、
が考えられない。
>どうしたらいいのですか
読み取り側、書き込み側のXMLファイルのパーミッションを
確認しなおし、PHPのエラーが出てないことも確認し、
その上で処理に使用したコードを抜き出して晒してみな。
0337332
2005/08/30(火) 00:40:09ID:NQqDUgFwありがとうございます。
ちょっと考えてきます。
0338age
2005/08/30(火) 01:56:53ID:pRMjTqBI今日、初めてPHPを勉強してみようと思い、
http://y-kit.jp/saba/xp/phpsetup.htm#inst
というサイトを参考にPHPのインストールとApacheのインストールをしました。
PHPはバージョンが4.4.0で、Apacheは1.3.33です。
インストール後、他のサイトを参考にして
<?php phpinfo(); ?>
一行だけを実行するものを作りました。
それに関してはhttp:/localhost/test.phpから表示がなされたのですが、
<html>
<head>
<title>初めてのPHP</title>
</head>
<body>
<p>今日は<?php echo date("n月j日"); ?>です。</p>
</body>
</html>
というように打ち込むと、Internet Explorerに「0B」と表示されるだけで、講座を開かれているサイトのような結果が出ません。
もう一度、インストール方法が書かれたサイトの内容と自分のインストール方法(php.iniとhttpd.confの設定など)を確認したのですが間違っているところが見つかりませんでした。
<?php phpinfo(); ?>
が正常に表示されていれば良い、ということなのですが…どなたか原因が推測できる方がおられましたら、ご助言お願いします。
0339nobodyさん
2005/08/30(火) 02:02:13ID:???<html>
<head>
<title>FirstPHP</title>
</head>
<body>
<p>Today is <?php echo date("n/j"); ?></p>
</body>
</html>
と、やってみたらいかがだろう?
これで表示されるなら、文字コードの問題。
0340338
2005/08/30(火) 02:06:24ID:pRMjTqBIありがとうございます、ありがとうございます!!^^
でも、最後の「B」って…それに文字コードの問題…うーん…
他のサイトなんかも参考にしながら頑張って調べてみます!^^
ありがとうございましたっ^^
0341338
2005/08/30(火) 02:18:06ID:pRMjTqBI「Today is8/30B」の「B」は「です。」の部分を消し忘れてただけでした、すみません;;
0343nobodyさん
2005/08/30(火) 19:40:22ID:???下記のように記述したスクリプトだとBADエラーが出ます。
if(!ereg("[0-9]{1, 7}", $str)){
echo '数字以外の文字が含まれています。';
exit();
}
当方正規表現は今まで避けてきていたのですが、今回だけは使わないとどうにもならないので
いろいろ検索をかけた結果このようになりました。ご指導よろしくお願いします。
0344nobodyさん
2005/08/30(火) 20:08:40ID:???>>if(!ereg("[0-9]{1, 7}", $str)){
「{1, 7}」を「{1,7}」("7"の前のスペース削除)にすればエラーは出ない。
でもそれだけだとパターンにマッチしない。
あとは正規表現の基本なのでググればすぐでてくるハズ。
数字"しか"許可しないという事は"全文字"(最初から最後まで)数字って事ですよ。
0345nobodyさん
2005/08/31(水) 07:50:17ID:???正規表現を避け続けたいなら
if (!is_numeric($str) or !is_int($str) or $str > 9999999 or $str < 0) {
echo "数字以外または8桁以上の数字";
}
0346nobodyさん
2005/08/31(水) 17:30:59ID:MJNcLNXpctype_digit($str);
はなんでtrueなの?
0347nobodyさん
2005/08/31(水) 18:02:45ID:???digitfだけでなくctype_*全部でtrueになる。
ソース見たら
for(n=0;n<len;n++) {
if(!iswhat((int)*(unsigned char *)(p++))) RETURN_FALSE;
}
RETURN_TRUE;
len = 0だからforループ回らずにtrue返してるようだ
0348nobodyさん
2005/08/31(水) 18:23:09ID:MJNcLNXpなるほどサンクス
空やゼロが絡む場面で使っててハマったよ
0350nobodyさん
2005/09/04(日) 03:14:58ID:???phpdev、XAMPP以外に、そのようなツールがあれば教えていただけませんか?
0353nobodyさん
2005/09/04(日) 04:08:14ID:???他に韓国系企業の配布してる日本語設定されたパッケージがあって記憶がある。
0354nobodyさん
2005/09/04(日) 04:36:34ID:???そちらの方もじっくり試してみて、自分の環境に沿ったものを選びたいと思います
皆様本当にありがとうございました
0356355
2005/09/04(日) 12:57:22ID:???0357nobodyさん
2005/09/05(月) 19:34:08ID:???可能なのでしょうか?
環境
FreeBSD/5.4-RELEASE-p6
Apache/2.0.54 (Unix)
mod_ssl/2.0.54
OpenSSL/0.9.7e
MySQL/4.0.25
PHP/4.4.0
0359nobodyさん
2005/09/05(月) 19:43:00ID:???BLOB型カラムにINSERT出来る
0360nobodyさん
2005/09/05(月) 19:44:15ID:???0361nobodyさん
2005/09/05(月) 21:53:31ID:tWqFRk3N(countで要素数を知りたいのではなく、メモリサイズです。)
環境は、PHP4以上を想定しています。
用途としては、
Fatal error: Allowed memory size of 8388608 bytes exhausted
を、サーバー側の変更を伴わず、プログラム側で回避したいです。
よろしくお願いします。
0362nobodyさん
2005/09/05(月) 21:57:51ID:???ソースを読みましょう。
PHPは読んだ事ないですが、
1つの変数は、2つ以上の構造体が組になってるはずなので、そのサイズをチェック。
てか、なぜそんな事が起きる…。
0363nobodyさん
2005/09/05(月) 22:01:57ID:???その馬鹿でかい配列はなんで発生したの?
SQLが原因ならselectをやめてfetchでデータを取る。
他の理由ならプログラムの構造を見直した方がよい。
0364nobodyさん
2005/09/05(月) 22:03:58ID:???0365nobodyさん
2005/09/06(火) 07:52:08ID:???jpgとかもビットマップみたいに展開しないと処理できないしね
0366nobodyさん
2005/09/06(火) 11:47:11ID:???どうもありがとうございます。
お察しの通り、GDです。
>メモリサイズの上限を規定するphp.iniを変更せずにということだよね?
そうです。メモリー上限は増やせないのと、仮に増やせたとしても、画像なん
で、状況によってはその上限も超えてしまう可能性があるので、メモリサイズ
を取得して、上限を超えそうなら自分でエラーメッセージを出すようにして、
Fetal errorは回避するような仕様を想定していました。
0369nobodyさん
2005/09/06(火) 13:29:18ID:???巷のレンサバとかはそれくらいが相場なの?
0370nobodyさん
2005/09/06(火) 13:41:19ID:???VPSや専鯖なら自由に設定できるが。
0372nobodyさん
2005/09/06(火) 14:11:39ID:???0373nobodyさん
2005/09/06(火) 14:46:03ID:???memory_get_usageは残りの使えるメモリだから今からimagecreate*で確保するメモリ量はわからんだろ
0374nobodyさん
2005/09/06(火) 14:52:11ID:???パディング入るから運用する鯖で確認しないとダメだが
0375nobodyさん
2005/09/06(火) 16:04:52ID:???適当にテストしてみたところ、それよりだいぶ多く食うみたい。
サムネイルの分はせいぜい数百KBしか使わないだろうけど、オリジナルがでかいと厳しい。
(可能なら)外部コマンドでImageMagick使った方が幸せになれるかも。
php -r '$memB = memory_get_usage();
quote> $im = imagecreatetruecolor(640, 480);
quote> $memA = memory_get_usage();
quote> $val = array_map("number_format", array($memB, $memA, $memA - $memB, 640*480*24/8));
quote> var_dump($val);'
array(4) {
[0]=>
string(6) "39,640"
[1]=>
string(9) "1,586,976"
[2]=>
string(9) "1,547,336"
[3]=>
string(7) "921,600"
}
0379nobodyさん
2005/09/06(火) 23:08:08ID:???$db = DB::connect( DSN );
$sql = "select * from table where id in ( ?, ?, ?, ?, ? )"
$db->getAll( $sql, array( 1, 2, 3, 4, 5 ) );
※PEAR使ってます
ここで、
array( 1, 2, 3, 4, 5 )
の要素が場合によって増減するときが悩みどころです…
0381nobodyさん
2005/09/07(水) 00:49:02ID:4ftygnTr0382nobodyさん
2005/09/07(水) 07:02:12ID:???0385nobodyさん
2005/09/07(水) 08:46:06ID:???1秒以内だ。
0386383-384
2005/09/07(水) 09:04:35ID:???スマソ。
0387nobodyさん
2005/09/07(水) 09:08:35ID:???\(\ ノ
0389379
2005/09/07(水) 17:39:08ID:???即レス有難うございます。
implodeした文字列を一つの ? にぶちこんでもいけるんですね。
チャレンジしてみます。
連投すいません。
別件で一つ疑問が出てきました。
PEARのマニュアルページ
ttp://pear.php.net/manual/ja/package.database.db.db-common.getall.php
で、
$data =& $db->getAll('SELECT cf, nf, df FROM foo');
if (PEAR::isError($data)) {
die($data->getMessage());
}
とあるんですが、
一行目の =& は何の意味があるのでしょうか?
普通に = で解説してるサイトもあるようですが…
0390nobodyさん
2005/09/07(水) 18:18:37ID:Zs1gbbuG0391nobodyさん
2005/09/07(水) 18:38:07ID:???0392nobodyさん
2005/09/07(水) 18:39:16ID:???ttp://www.php.net/manual/ja/language.references.php
>>390
ttp://pc8.2ch.net/test/read.cgi/php/1102980903/
0393nobodyさん
2005/09/07(水) 22:38:46ID:QGlSv/RFひろゆき乙
最近人が減って、スレ立て自演しないといけなくなったんだろ?
0394nobodyさん
2005/09/07(水) 23:14:28ID:???試験受けようとおもってるんですが。。
0396nobodyさん
2005/09/09(金) 21:44:22ID:???0397nobodyさん
2005/09/09(金) 21:59:42ID:???array_shift(file("hoge.txt")) とか、リファレンスの挙動を厳密にした影響受けてる奴でしょ?
修正必須。
0399nobodyさん
2005/09/09(金) 22:16:39ID:???0400nobodyさん
2005/09/09(金) 22:23:48ID:???0401nobodyさん
2005/09/09(金) 22:27:21ID:???うん。force_refで定義された引数持ってる関数が全部影響ある。
単に、戻り値だけ欲しくてこの手の関数呼ぶケースが配列関数に多いだけ。
>>400
あれー?うちだと問題無いんだけど。もいちど落としてくるか・・。
0402nobodyさん
2005/09/09(金) 22:30:14ID:???0403nobodyさん
2005/09/10(土) 01:18:51ID:???どうなっとんじゃこりゃ?
0404nobodyさん
2005/09/10(土) 02:06:13ID:???0405nobodyさん
2005/09/10(土) 10:46:05ID:???0406nobodyさん
2005/09/10(土) 10:47:18ID:???0407nobodyさん
2005/09/10(土) 10:54:15ID:???0408nobodyさん
2005/09/10(土) 10:56:33ID:???count(file("filename"));
ファイルがバカデカイならfgetcで一文字ずつ読んで改行の個数数える。
0409nobodyさん
2005/09/10(土) 11:20:46ID:???はfcloseすると自動的に解除されますが、
flock($fp, LOCK_UN);
をしてからfcloseをした方がよいのでしょうか?それともいきなりfcloseしても何ら問題はないのでしょうか?
0410nobodyさん
2005/09/10(土) 12:22:04ID:???と言われたらそのまま信じるのか?
flockみたいなクリティカルな処理は自分で十分調べるしかないよ
0411nobodyさん
2005/09/10(土) 13:01:44ID:???というエラーが出るのですが、undefinedというのはどういうことなのでしょうか?
呼び出す前になにか必要なのでしょうか?
0412nobodyさん
2005/09/10(土) 13:50:50ID:???0413411
2005/09/10(土) 15:00:08ID:???--enable-mbstring=shared
となっているので、有効になっていると思うのですが
0414nobodyさん
2005/09/10(土) 15:46:37ID:???それは静的に組み込んでることを意味する訳ではないので。
何らかのパッケージでPHPをインストールしたのなら、
php-mbstringとか別のパッケージが存在しないか?
0415411
2005/09/10(土) 16:40:39ID:???yum search php-mb
でみてみると
php-mbstring.i386 5.0.4-10.4 installed
となっているのですが、エラーは依然出てしまいます
0416名無しさん@そうだ選挙に行こう
2005/09/10(土) 18:30:09ID:???だからsoはあるけど実行時にロードされてないんじゃないのって
0417名無しさん@そうだ選挙に行こう
2005/09/10(土) 18:58:03ID:???0418名無しさん@そうだ選挙に行こう
2005/09/10(土) 20:34:47ID:???0419名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:23:19ID:???0420名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:33:50ID:???http://ns1.php.gr.jp/pipermail/php-users/2005-January/024792.html
を参考にして以下のようにスクリプトを書きました。
$file = $_GET["file"];
$range = $_SERVER["HTTP_RANGE"];
if(preg_match("/^bytes=(\d+)\-(\d+)$/", $range, $arr)){
$offset = $arr[1];
$end = $arr[2];
$len = $end-$offset+1;
}
//ヘッダー
header("HTTP/1.1 206 Partial Content").
header("Last-Modified: ".date("D, j M Y G:i:s \\G\\M\\T", filemtime($file))).
header("Accept-Ranges: bytes").
header(sprintf("Content-Range: bytes %d-%d/%d",$offset, $end, filesize($file))).
header(sprintf("Content-Length: %d", $len)).
header("Content-Type: audio/3gpp2");
//読み込む
@readfile($file);
しかし実際にファイルのDLを行ってみると端末側でエラー表示がされます。
実際にそのリンク先のメーリングリストではreadfileまで行っているかが不明ですので
readfileが原因なのでしょうか?分かる方よろしくお願いします。
0421名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:41:56ID:EeO+nR6C俺らはエスパーではない
0422名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:52:47ID:???まず、変な小細工なしに、普通にダウンロードをさせることは出来ているんだろうか?
auの場合、単純な<a>タグのリンクではムービーファイルは落とせないよ。
0423420
2005/09/10(土) 23:52:18ID:???分かりにくい説明で申し訳ございません。
端末側でダウンロードしますか?と聞かれた後「はい」を選択すると
ダウンロードデータが正しくありませんと表示されます。
>>422
熟知しております。
<object data="hoge.php?file=test.3g2" type="audio/3gpp2">
のように使用しようかと考えております。
HTTP_RANGEの仕様がいまいち分かっていないため、スクリプト側の処理が分かっていない部分もあります。。
0425名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:28:24ID:???HTMLでobject要素内のparam要素でsize指定してやらないと、
ファイルサイズを取得するためにHTTPリクエストをHEADメソッドで送ってくる。
これに対してHTTPレスポンスヘッダでファイルサイズをContent-Lengthにセットして返せばいいわけだが、
HEADメソッドでContent-Lengthを設定できないPHPの罠があるっぽい。
だから、最初にobject要素を表示する段階でsizeを指定してやるのが手っ取り早い。
0426420
2005/09/11(日) 20:55:18ID:???objectの際に送ってくるデータをgetallheadersで取ろうとしたんですがArrary
になってしまったので分かりませんでした。助言ありがとうございます。
今現在このようになっています(まだエラーは出ます)。
au端末をお持ちの方、アドバイスよろしくお願いします。
http://nullpo.t35.com/file.phps
0427名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:04:40ID:Gpc71woo0428名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:47:56ID:???んにゃ。httpで既に出来てるならOpenSSLサポートが
有効になったPHPを利用すれば殆ど変更はいらない。
0429名無しさん@そうだ選挙に行こう
2005/09/11(日) 21:58:15ID:???臭い事やっていないで、
header("Content-Type: audio/3gpp2");
@readfile($file);
だけでやってみそ。
0431名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:11:53ID:???パケット拾ってみれば判る
> header(sprintf("Content-Length: %d", $len)).
> @readfile($file);
めちゃくちゃすんな
0432名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:13:17ID:???PEARのHTTP_Downloadを使うと楽かな
0433名無しさん@そうだ選挙に行こう
2005/09/11(日) 22:13:57ID:PQjWelba0434nobodyさん
2005/09/12(月) 00:16:31ID:???でページは飛ぶんだけど、ブラウザのURLが変わらない場合って
何かなかったけ?
0435nobodyさん
2005/09/12(月) 00:17:42ID:???■ このスレッドは過去ログ倉庫に格納されています