【PHP】質問スレッドpart21【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/27 18:00ID:???・新規質問の方は上げてください。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
0698nobodyさん
04/09/10 00:41ID:GObesny2やっぱりここで聞く質問じゃないですか?
0699nobodyさん
04/09/10 00:52ID:???http://pc5.2ch.net/test/read.cgi/php/1065151808/
ここかな?
0700nobodyさん
04/09/10 00:56ID:???ご迷惑お掛けしてすみませんでした。
0701nobodyさん
04/09/10 03:33ID:???↑ここの例1をwindowsで動かしてみたんですが、
そのままだと接続した瞬間シャットダウンしてなにもできません…
試しにsocket_read のPHP_NORMAL_READをPHP_BINARY_READに変えてみたんですが、
そうすると今度は動くには動くんですが、一文字入力するたびにレスポンスがあって、
'quit'と入力することができません。
なにかまともに動かす対処法はないでしょうか
0702701
04/09/10 06:00ID:???0703nobodyさん
04/09/10 10:11ID:???一つ作るのに3日くらい試行錯誤しながら
作ることもありまつ。
できあがったとしても、マッチはするものの
それで合っているのか不安です。
助けてください
0706703
04/09/10 10:35ID:???0709nobodyさん
04/09/10 11:52ID:e5AaNUbi一朝一夕にマスターできると思うな。
0710軟式PHP
04/09/10 12:58ID:???0711703
04/09/10 13:22ID:???よく不安になるので・・・
正規表現が楽しめるようになるよう
がんばりまつ(`・ω・´)
レスありがとう。
0712nobodyさん
04/09/10 13:42ID:???とりあえずこんなスレも有るぞ
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/
0714686
04/09/10 18:22:40ID:???mysql_connect(...) or die(mysql_errno().":".mysql_error());
としてためしてみると、
2003:Can't connect to MySQL server on 'hostname' (0)
となりますです。
tcpdumpしてみると正常に接続できるときとは異なるパケットが飛んできてるようだけど、
だからといってどこを直せばわからん。
よくわからんので、MySQLのクライアントライブラリから
コンパイルしなおすことにするです。うーむ。
0715nobodyさん
04/09/10 18:32:16ID:???Regexp Tester
http://www.bitesizeinc.net/index.php/regexp.html
0716nobodyさん
04/09/10 19:39:21ID:???ブラウザの戻るしてもちゃんと表示されてるんだけどどうやってるんだ?
0718nobodyさん
04/09/10 19:54:27ID:???戻ったら期限切れで表示されないよね。
0720軟式PHP
04/09/10 23:39:59ID:???0721nobodyさん
04/09/11 08:14:04ID:???header()じゃだめだし、ini_set()でもそれらしいオプションが見つからん。
やりたいことはCGI版をコマンドラインで実行させたときに余計なHTTPヘッダを出力しないってだけなんだけど。
-qオプションを使いたいところなんだが、
#!/usr/env/php -q
としたら
/usr/bin/env: php -q: No such file or directory
と出て怒られた。
0722nobodyさん
04/09/11 09:09:35ID:???CGI版の PHP がどこにインストールされているのか知らないけど。
env を使わずに
#!/usr/bin/php -q
とか
#!/usr/local/bin/php -q
にしてみれば?
0724nobodyさん
04/09/11 12:18:59ID:???オイラはgoo blogは使ってないから想像で書くけど、
POST後にブラウザの戻るを使われて困る場合は、
POST処理後にheader("Location: 〜".SID) を使ってGET扱いにさせる。
0725nobodyさん
04/09/11 13:15:27ID:1u0p7mhsphpMyAdmin-2.6.0-rc2.tar.bz2を解凍して
phpMyAdminと名前を変えてhttp://localhost/phpMyAdmin/
でアクセスすると
扱えない拡張子のファイルです,
PHP の設定をチェックしてください。
というメッセージがでて使用できません。どうすればよい
でしょうか?
0727sasa
04/09/11 14:34:22ID:1u0p7mhsphp.iniを調べてもそれらしき場所が見当たりません。
httpd.confも.php登録してますし・・・
なんで扱えない拡張子なんだろ・・・
0728sasa
04/09/11 15:06:32ID:1u0p7mhs0729nobodyさん
04/09/11 15:35:49ID:???それを下げるのは解決法としてはあんまり良くないな。
>>725のエラーメッセージらしきものをググってみても全然ヒットしないんだけど、
何か隠してることは無い?
0730nobodyさん
04/09/11 15:52:16ID:yl69/FM+日付、昨日のカウント数、今日のカウント数、総カウント数
という形式で保存、総カウント数を出力しています。
保存はflock→fputs→fcloseです。
病的リロードに耐えうるカウンタは、どう作ればよいのでしょうか。
コツなどありましたら教えてください。
0731nobodyさん
04/09/11 16:05:03ID:???課されていれば壊れるときは壊れる。
flockで保護できるのは同時書き込みだけ。
0733730
04/09/11 16:13:43ID:yl69/FM+壊れるのはどうしようもないということですので、
2重カウント禁止に修正したいと思います。
731さん、732さんありがとうございました。
0734nobodyさん
04/09/11 16:15:07ID:???/usr/bin/phpでも/usr/local/bin/phpでもどちらでも動かせるようにしたいんで。
>>723
もちろんそうなんだけど、どちらがインストールされてても動くようにしたいので。
だって、「HTTPヘッダを出力しない」ってだけだから、それくらいの機能あるだろうと思うのだが。
それくらいの機能さえ見つけられないおれがへたれなんだがな。
0735nobodyさん
04/09/11 16:45:45ID:???HTTPヘッダの出力抑制は-qオプションであってるよ。
まあ一部抑制しきれてない(エラーかなにかだったかと)部分はあったと思うけど。
エラーでてるのはオプションの与え方とか、実際にファイルがなくて出てるんじゃないの?
0736nobodyさん
04/09/11 16:52:30ID:???そんな制限のないものもあったような気もするが。
>/usr/bin/phpでも/usr/local/bin/phpでもどちらでも動かせるようにしたいんで。
特に ruby の人はこの傾向が強いけど、個人的にはやっちゃいかんと思う。
↓こうすればできるようだけど、オススメはしない。
#!/bin/sh
sed 1,3d "$0" | php -q -- "$@"
exit
<?php
phpinfo();
?>
0737nobodyさん
04/09/11 16:59:08ID:???0738nobodyさん
04/09/11 17:20:54ID:???abcabcヂツテ
これって仕様ですか?
0739nobodyさん
04/09/11 17:39:36ID:???0740nobodyさん
04/09/11 17:39:49ID:iOhe01Jz仕様です。
と答えれば満足するのか?
0741nobodyさん
04/09/11 17:41:32ID:2sNlQMEVstrtolowerはマルチバイトには対応してないよ。
mb_strtolower使いな。
0742738
04/09/11 17:42:10ID:???文字コード指定してあげたら
ちゃんと動きました
0743nobodyさん
04/09/11 17:43:38ID:???仕様というか、ある意味海外製ソフトウェアの宿命。
2バイト文字がShift_JISコードの場合の文字コードは、
A → 41
B → 42
C → 43
ア → 83 41
イ → 83 43
ウ → 83 45
で、内部にAとかを内包してるから。
最初から2バイト文字を配慮して作られてるソフト以外ではそのまま変換してしまう。
PHPもしかり。
試してないけどttp://jp.php.net/manual/ja/function.mb-strtolower.phpはどう?
mbstringモジュールが有効でPHP4.3.0以降ならの話みたいだけど。
0744738
04/09/11 17:46:06ID:???>>741
オラクルのlowerと同じ仕様の関数を探してました
ありがとうございます!
4.3からmb_strtolowerがあったんですね。
0745nobodyさん
04/09/11 18:27:55ID:jQgqezNj使用しているサーバのGDがGIFに対応していないので困っています。
PHPを使ってGDを使わずGIFを読み込み作成は出来るのでしょうか?
みなさんはPHPでGIFを扱うときどうしているのでしょうか?ご教授ください
0747nobodyさん
04/09/11 18:38:14ID:???GIFの読み込みだけはGIFの特許問題と関係なく結構前のバージョンから対応している
まあいずれにしても、入れ替えるに同意
古いバージョン使っててもろくなことないし
0748nobodyさん
04/09/11 18:39:50ID:jQgqezNjありがとうございます。
さっそく、管理者にメールで要望してみます。
非常に助かりました
0749nobodyさん
04/09/11 18:55:13ID:onw6fTqiどのようにすればできますか?
header の location で遷移はできましたが、
hidden とかのパラメーターが渡らないんで困ってます。
? やセッションを使って渡してもいいかと思いますが、
他の方法があったら教えてくださ〜い。
今は、ファイルBをファイルAにインクルードして対処してます。
0751nobodyさん
04/09/11 20:30:46ID:jF+qSLdIPHP+apache+MySQLで組んだWEBアルバム(写真)があるのですが、携帯メールに
添付されている写真データを自動的にデータベースに登録する方法がピンときません。
できる方法ありましたら、大まかなイメージで結構ですのでアドバイスください。
現在、Postfixを入れ、画像付のメールが~/MailDir/newディレクトリに保存されて
いるところまで確認できてます。
0754nobodyさん
04/09/11 22:14:20ID:???そのサーバで、flock によるロックがかかるかの検証をした方がいいよ。
flock のマニュアルにはこうあります。
> flock()はNFS及び他の多くのネットワークファイ ルシステムでは動作しません。
> 詳細についてはオペレーティングシステ ムのドキュメントを確認下さい。
>
> いくつかのオーペレーティングシステムでflock() はプロセスレベルで実装されています。
> ISAPIのようなマルチスレッド 型のサーバーAPIを使用している場合、同じサーバーインスタンスの
> 並列スレッドで実行されている他のPHPスクリプトに対してファイルを保 護する際に flock()を
> 使用することはできません!
>>394 の検証方法なんてどうよ?
0755nobodyさん
04/09/12 00:12:15ID:???>個人的にはやっちゃいかんと思う。
ほう、そうなのか?もしよければ理由きかせて。セキュリティ上の理由?
>>737
>バッファに咥えて破棄することはできんの。
ob_start()してob_close_clear()するってことかな。なんかそれでいけそう。
ていうか、こういう回答しかこないってことは、CGI版ではHTTPヘッダは必ず出力されてしまい、
抑制できないってこと?
0756nobodyさん
04/09/12 01:02:10ID:???header("RESPONSE: HTTP/1.1 404 Not Found");
とやっても自動出力されている最初のRESPONSE: HTTP/1.1 200 OK だけしか検知してくれない場合がある
0757nobodyさん
04/09/12 01:07:41ID:???もう板違い
>756
きちんと404も出力すれば200は上書きされるよ
0758nobodyさん
04/09/12 01:11:52ID:???HTTPステータスは別格。書式->http://jp.php.net/header
0759nobodyさん
04/09/12 01:13:17ID:5k4aSpIX0760nobodyさん
04/09/12 02:01:40ID:lTFax1YWheader("Content-Length: ".filesize($DB_PATH.$EXPORT_FILE));
header("Content-Type: application/x-octet-stream");
readfile($DB_PATH.$EXPORT_FILE);
これでファイルダウンロードしているのですが、
DLしたファイルの1行目に空白行(改行コード)が入ってしまいます。
(サーバー上のファイルは空白行がない)
Apache/1.3.24 (Win32) PHP/4.2.1
これってIEが悪いのですか?
0762nobodyさん
04/09/12 02:09:53ID:lTFax1YWレンタルサーバーではないです。
ローカルでやっても同じ現象がでてしまいます。
0763nobodyさん
04/09/12 02:39:44ID:???\n
<?php
?>
になってるとか。
0764nobodyさん
04/09/12 04:25:37ID:???おっしゃるとおりでした。
includeしたphpの最終行に
<?PHP
?>
\n
となってました。どうもありがとうございました。
0765nobodyさん
04/09/12 05:33:04ID:ydmYYx+Iランダムで「タグ付きのテキスト(要はhtml文書の一部)」をHP上で表示したいのですが
テキストが短ければ「 " -> \" 」や「 改行 -> \n 」の変換作業は楽です。
ですが長くなってくると変換がめんどくさいので良い方法はないですかね。
「タグ付きのテキスト」をファイルにして読み込む方法を思いついたのですが、ちょっと大げさかと。
html文書からコピペで変更できると楽なんですが…
0766765
04/09/12 05:35:04ID:ydmYYx+I$i = rand(0, 4);
switch ($i) {
case 0:
$ad_data = " <tr>\n <td><img src=\"aaa.gif\">\n";
break;
上記の感じでめんどくさいのでどうにかならないかと
0767nobodyさん
04/09/12 05:41:58ID:???HTML内に、タグ含むHTMLを表示したいということじゃないのか。
> テキストが短ければ「 " -> \" 」や「 改行 -> \n 」の変換作業は楽です。
\"や\nに変換するということは、phpコードに変換するということか?
> 「タグ付きのテキスト」をファイルにして読み込む方法
何に対してどう大げさなんだ?
> html文書からコピペで変更
で、結局htmlを何に「変更」するんだ?
0769nobodyさん
04/09/12 05:57:35ID:???0770nobodyさん
04/09/12 06:17:05ID:???ランダムでHPの内容変えたいってだけか?
表示するHTML全部ダブルクォーテーション内に書いて、
改行とか"とかまんどくせ〜
とか言ってるのか?
まさか・・・
俺ら釣られた?
0771nobodyさん
04/09/12 07:51:02ID:???HTMLソースでタグを改行して綺麗にネストさせたいがために
\nを入れるのがダルーって事か??
0772nobodyさん
04/09/12 09:46:28ID:Iy6EF+FAインストーラー版じゃなくてアーカイブ版じゃないとダメなんですか?
0773nobodyさん
04/09/12 10:46:16ID:???> 「タグ付きのテキスト」をファイルにして読み込む方法
これで全てが解決します。include or require のマニュアルを参照。
>>772
php.netで配布してるブツのことなら、
> windows php 5.0.1 installer ( CGI only...
って書いてあるけど?
0774nobodyさん
04/09/12 14:17:03ID:7xfelydBランダムな箇所がエラーになるんですが、これってphp5.0.1のバグなんでしょうか・・・?
0775774
04/09/12 15:31:35ID:???しばらくは様子見しよう・・・
0776軟式PHP
04/09/12 15:33:05ID:???0777nobodyさん
04/09/12 16:11:31ID:RQoOdmb2時間だけの足し算で、思う結果が出せません。
テーブルには、time型の項目が2つあり、この2項を足した結果がほしいのです。
date("H:i:s",strtotime($myrow["a_time"])+strtotime($myrow["b_time"]));
調べたところ、strtotime($myrow["a_time"]) の時点で日付のデータも含まれていて、
それが2つあるため、足し算した結果オーバーフローしてしまっているようです。
日付のデータを含まないで時間だけを扱う方法はないでしょうか。
0778nobodyさん
04/09/12 16:32:09ID:???ちょっとまだそういうところあるね>PHP5
PHP4にアクセラレータ系のエクステンションを噛ました時にも
結構同様なことは起きたけど。
0779nobodyさん
04/09/12 16:39:00ID:???クッキーは必ず必要でつか?
0782nobodyさん
04/09/12 17:28:04ID:???ちと遅レスだが
「ファイル終端におけるPHPブロックの終了タグはオプション(任意)です。 」
( ttp://jp.php.net/manual/ja/language.basic-syntax.php#language.basic-syntax.phpmode )
なので、特に必要ないなら付けないようにすれば、そういうので悩まなくて済むよ
>>776
以前printfで\0が入るという大バグが出た時は参った
あれ以来1ヶ月くらい様子見てからにしてる
0783nobodyさん
04/09/12 18:57:23ID:???オブジェクト指向で作りたいから導入考えてたけど
まだだめか…
0784nobodyさん
04/09/12 19:00:13ID:???0785nobodyさん
04/09/12 19:06:53ID:???PHPでファイルをアップロードしたときの
ファイルのパーミッションが600になるのですが
chmodで644にすることはできますが
最初から「644」で作成することはできないでしょうか?
php.iniの設定やapacheの実行ユーザの設定などで
決まるのでしょうか?
0787nobodyさん
04/09/12 19:18:57ID:???apacheの実行ユーザの設定で決まります。
umask。
でも、644にする必要無いんじゃないの?FTPで消したいとかなら別だけど。
0788nobodyさん
04/09/12 19:44:19ID:???なるほどー
ちなみにnobodyの場合は
どこかで設定可能でしょうか?
アップした画像ファイルをそのまま参照可能にしたいのですが
今まで使ってたレンタルサーバでは
そのまま「644」になってたのでなにか方法があるのかなーと。
0789nobodyさん
04/09/12 19:45:41ID:???あるけど、PHP4でもOOPは出来るなぁ。
オブジェクト指向で作りたいからこの言語…と言ってる時点で底が見えてる。
0790Sinji
04/09/12 22:19:09ID:O4Yb0b0iたとえば:
$str = "あい" という文字列なら
"2422" (JISの「あ」に相当する) と "2424" (「い」に相当する) という数字を出力したいのです。
よろしくお願いします。
0791nobodyさん
04/09/12 22:43:52ID:???for($i=0; $i<strlen($str); $i++) printf("%02x", ord($str{$i}));
0793nobodyさん
04/09/12 22:47:53ID:???$hex=implode('', unpack('H*', $str));
$strがJISなら漢字IN/OUTが含まれるかも
SJISなら問題なし
0794Sinji
04/09/12 23:19:43ID:O4Yb0b0i$str = "あい";
for($i=0; $i<strlen($str); $i++) printf("%02x", ord($str{$i}));
の出力は:82a082a2 (24222424ではなく)これは単なるシフト(+5e7e)かと思ったら
$str = "アイ" や $str = "大阪"などにしたらどうもそうと見えないのですが。。。
0795nobodyさん
04/09/12 23:53:38ID:Jg1ciVqmその for でやってることが bin2hex だよ。
そして $str = "あい" の結果は Shift-JIS に見えるけど、$str = "アイ" や $str = "大阪" の結果はどうなるのよ?
0796Sinji
04/09/13 00:12:43ID:3IjiBAgs>そして $str = "あい" の結果は Shift-JIS に見えるけど、$str = "アイ" や $str = "大阪" の結果はどうなるのよ?
$str="アイ"などの結果はShift-JISのようです。欲しいのはJISの16進数なので、一応mb_convert_encoding($str,"JIS")をやってみましたがうまくできませんでした。
たとえば:
$str = "あい"; $str = mb_convert_encoding($str,"JIS");でbin2hexの出力は「1b244224」でした。
$str = "大阪"; $str = mb_convert_encoding($str,"JIS");でbin2hexの出力は「1b244242673a651b2842」でした。
なんだか、私はPHPがよくわからないと思っています。。。
0797nobodyさん
04/09/13 00:15:49ID:???■ このスレッドは過去ログ倉庫に格納されています