1 名前:nobodyさん mailto:sage [2008/09/20(土) 20:23:08 ID:???] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 73 pc11.2ch.net/test/read.cgi/php/1220440493/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。 【その他諸注意】 ・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
511 名前:nobodyさん mailto:sage [2008/10/01(水) 18:31:45 ID:???] だからファイル自体のパーミッションを変えろと ってか、自動生成するファイルを手動で更新する、という事が妙
512 名前:nobodyさん [2008/10/01(水) 18:43:10 ID:YIHO5yeH] >>508 サンクス PECLってPEARと同じようなものだと思ってたけど全然違うのな
513 名前:たまちゃん ◆ExGQrDul2E [2008/10/01(水) 19:23:22 ID:ZUcHfGMW] PHP 配列 list.txtには、5人の名前とナンバーが保存されています。 1<>田中<> 2<>西田<> 3<>山中<> 4<>鈴木<> 5<>山田<> これを $list = file("./list.txt"); foreach ($list as $view){ list($no,$name) = explode('<>', $view); echo "ナンバー{$no}:{$name}"; } で表示するんですが、このままだとすべて表示されます。それで、今回は、会員ファイルにいる会員のみに特別にメッセージを表示するスクリプトを考えています。メンバーファイルのメンバーは、かならず リストファイルの中の人が保存されています。 member.txt 2<>西田<> 5<>山田<> list.txtの中身を表示するときに、member.txtのなかに同じナンバーがあれば『メンバーです』と表示させたいのですがどうしたらよいのでしょうか? 【続く】
514 名前:たまちゃん ◆ExGQrDul2E [2008/10/01(水) 19:24:48 ID:ZUcHfGMW] 【続き】 私はこう考えましたがうまく動かないです。 $list = file("./list.txt"); $member = file("./member.txt"); foreach ($list as $listview){ list($no,$name) = explode('<>', $listview); foreach ($member as $memberview){ list($memberno,$membername) = explode('<>', $memberview); if{$no == $memberno){ $mes="あなたはメンバー";}else{ $mes=""; } echo "{$mes}ナンバー{$no}:{$name}"; } }
515 名前:478 [2008/10/01(水) 19:27:23 ID:Zwlv2Kek] >>510 ありがとうございます。 所有者ってところにこだわりすぎてました。 >私の環境では所有者がrootであってもファイルに適切な書き込み権限があれば ftpで上書き更新できました。 これでやっと理解でき image_graphでの作成の過程でchmod(aa.png",0707)としたら上書きができました。 かなり長い間迷っていたのでほんとうにありがとうございますm(__)m >>511 >自動生成するファイルを手動で更新する 数日に一度たまにやる超高負荷な部分を自宅PC数台で処理させて 日々のすこしの処理はレンタルサーバー上でやるって感じです。
516 名前:nobodyさん mailto:sage [2008/10/01(水) 19:29:46 ID:???] >>514 in_array
517 名前:211 [2008/10/01(水) 19:32:25 ID:bvCNIVPX] >>514 $member の foreach ループで、$mes に値をセットしても ブレイクするなどしないとまたブランクに戻ってしまう可能性が ありますね。
518 名前:nobodyさん mailto:sage [2008/10/01(水) 20:23:11 ID:???] >>478 いまさらだが jp.php.net/chown
519 名前:nobodyさん [2008/10/01(水) 20:38:27 ID:3YFA2aVn] 掲示板などのフォームでhtmlタグを一部だけ許可するときに 自分でイチから書くと死ねるとおもうんですが、 そういうライブラリとかって、どなたか作られてないですかね・・
520 名前:nobodyさん mailto:sage [2008/10/01(水) 20:39:19 ID:???] 487の人?
521 名前:nobodyさん mailto:sage [2008/10/01(水) 20:44:26 ID:???] >>519 そんなに許可するタグ多いのか???
522 名前:nobodyさん mailto:sage [2008/10/01(水) 20:47:30 ID:???] 20も無いと思うんだが
523 名前:nobodyさん [2008/10/01(水) 21:13:46 ID:3YFA2aVn] いや別人です。。 許可は10個くらいです。
524 名前:nobodyさん mailto:sage [2008/10/01(水) 21:18:49 ID:???] 488でいけそうです
525 名前:nobodyさん mailto:sage [2008/10/01(水) 21:23:56 ID:???] >>524 誰?
526 名前:nobodyさん [2008/10/01(水) 22:26:04 ID:3YFA2aVn] 524=519です。 strip_tagsでやると顔文字とかが消えることがあるということなんですが うまく回避できるようなものはないでしょうか? 許可タグは <blink> <hr> <marquee> <font> <div> <a> <br> だけです
527 名前:nobodyさん mailto:sage [2008/10/01(水) 22:47:29 ID:???] 一旦そのタグだけ別の文字に変換 タグすべて排除 変換を復帰 でいいんじゃね?
528 名前:nobodyさん mailto:sage [2008/10/01(水) 22:57:13 ID:???] >>526 >>492 じゃなんでだめなの?
529 名前:nobodyさん [2008/10/01(水) 23:14:21 ID:3YFA2aVn] みおとしてました。 見てみます。。
530 名前:nobodyさん mailto:sage [2008/10/02(木) 09:25:56 ID:???] test
531 名前:nobodyさん [2008/10/02(木) 13:41:16 ID:BKOS1nt/] ww7.tiki.ne.jp/~inabah/php/002_004.htm いまWEB上の解説を見てるんだが、これってまちがってるよね? $a = 10; $b = $a; $c = &$a; // 参照渡しによる代入 $a = 20; print "$a = $a<br>"; // $a の値は当然 20 print "$b = $b<br>"; // $b の値は 10 のまま print "$c = $c<br>"; // $c の値は 20 になっている
532 名前:nobodyさん mailto:sage [2008/10/02(木) 14:24:40 ID:???] 参照の説明としてなら、合ってる 出力は 10=10 みたいになるがな
533 名前:nobodyさん mailto:sage [2008/10/02(木) 15:01:45 ID:???] サブルーチン作るときに、 定義するときも、 呼び出すときも、 () って絶対つけないとだめなの? perlだったらつけなくてもよかったんだが。
534 名前:nobodyさん [2008/10/02(木) 15:32:33 ID:BKOS1nt/] 質問 ww7.tiki.ne.jp/~inabah/php/004_004.htm ここのページみて、 <?php print "ここは元のファイルから書かれています。<br>\n"; include 'www.php.gr.jp/ '; print "<br>ここも元のファイルから書かれています。<br>\n"; ?> これをやってみたんだが、 (インターネット上にあるファイルを読み込んでくる処理ね) Warning: include() [function.include]: URL file-access is disabled in the server configuration in C:\xampp\htdocs\php\6.php on line 3 というエラーが出る。グーグルでエラーメッセージを検索して https://www.google.com/adsense/support/bin/answer.py?hl=jp&answer=70494 「PHP サーバーの設定内の allow_url_fopen と allow_url_include を有効にしてください。」 という記述を見つけて、その通りにした。 しかし、エラーがまだでる。 なぜ?
535 名前:nobodyさん [2008/10/02(木) 15:58:11 ID:BKOS1nt/] xampp1.6.8のバグなのかな、、、 \xampp\apache\bin\php.ini ↑これを編集して、 ちゃんと allow_url_fopen と allow_url_include を有効にしたんだが、 php.infoを見ると allow_url_include Off になってる。あれ?と思って C:\xampp\php\php.ini を見たら、書き換わってない。 allow_url_include=offになってる。 \xampp\apache\bin\php.ini を書き換えたら、その設定が自動的に C:\xampp\php\php.ini に反映されるのではないのか?
536 名前:nobodyさん [2008/10/02(木) 16:13:53 ID:BKOS1nt/] 自己解決した。 アパッチのhttpd.confに PHPIniDir C:/xampp/php/php5.ini って書いて、上書き保存して、アパッチを再起動したら 動いた。 PHPスイッチを使ったら、 C:/xampp/php/php5.ini ってファイルができたので、それを強制的に 指定したらうまくいった。
537 名前:nobodyさん [2008/10/02(木) 16:19:43 ID:BKOS1nt/] xamppなんだけど、 php.iniの読込先の指定は、 アパッチのhttpd.confに PHPIniDir C:/xampp/php/php5.ini と書く、 このやり方でいいの? php5.iniはPHPスイッチを使ったら自動で生成された。 オリジナルのファイルは \xampp\apache\bin\php.ini を見ているとおもう。そのファイルを自動でコピーして 生成したみたいだ。
538 名前:nobodyさん [2008/10/02(木) 16:48:14 ID:BKOS1nt/] >>537 は自己解決した。 どうやら設定を間違えていたようだ アパッチのhttpd.confに設定するのは PHPIniDir C:\xampp\apache\bin\php.ini こっちが正解だったようだ。
539 名前:nobodyさん [2008/10/02(木) 17:31:01 ID:BKOS1nt/] 原因がわかった。 以前、自力で単独でインストールしていた PHPがあって、その設定がレジストリに残っていた。 修正方法は、PHPをアンインストールして、 regeditでその該当のキーをxamppのものに 変更して、Windowsをシャットダウンしてコールドブートしたら 反映された。 参考URL ajiblog.sblo.jp/archives/200802-1.html php.iniの設定が反映しない デフォルトでは以下のphp.iniが使用されます。 c:\xampp\apache\bin\php.ini しかし、手動でPHPを一度インストールして、その後にxamppをインストールした場合、 読み込まれるphp.iniの位置が以前のままになっている場合があり、この場合php.iniを 変更しても設定が反映されないという現象が起こります。 原因は、古いphp.iniファイルのパス指定がレジストリに残っていることです。新しい php.iniのパスに変更するにはregedit.extを起動し、"php.ini”で検索して書き換 可能です。 例. 以前、C:\PHPにインストール、php.iniのデフォルトパスが c:\PHP\php.ini の場合 キー: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionInstaller \UserData\S-1-5-18\Components\7226D23B061375D47942B053CD215891 \00000000000000000000000000000000 値: C:\PHP\php.ini これを xamppのデフォルトに合わせて "c:\xampp\apache\bin\php.ini" などに変更して apacheを再起動すすれば反映されるようになります。 ----------------------------- なお、レジストリを変更したばあい、windowsの再起動が必要になります。
540 名前:nobodyさん mailto:sage [2008/10/02(木) 17:34:03 ID:???] >>533 perlperlうるせえな お前がやってんのはphpだろ どの言語も仕様が一緒だと思うなよタコ 言語的にはperlもphpも異端なんだよ
541 名前:nobodyさん mailto:sage [2008/10/02(木) 18:17:59 ID:???] >>539 糞レス垂れ流すな。 そんなんで詰まるなら最初からxampp使うな
542 名前:nobodyさん mailto:sage [2008/10/02(木) 19:30:47 ID:???] ちょと質問 echo strlen ("亜w背drtfgyふじこlp;@:「」"); この文字列は36byte なのに返り値は 53 と出力される不思議。 strlen の数えている文字数って何? 文字列のバイト数を得たいんだけど使い物にならないという ('A`) 文字コード? でもUTF8で書いてるんだけどな・・・
543 名前:nobodyさん mailto:sage [2008/10/02(木) 19:32:38 ID:???] >この文字列は36byte なのに その根拠は何だ。まさか全角文字列が全部2byteとか思ってないだろうな。
544 名前:nobodyさん mailto:sage [2008/10/02(木) 19:47:23 ID:???] >>542 ユニコードの場合、一文字3バイトとか 普通にありうる。 しかも”(だくてん)も一文字としてカウントされるので、 たとえば 「が」 は、 「か」+「”」 (か+だくてんのちょんちょん) と解釈されるので、 3バイト+3バイト=6バイト とか普通にありうる。それがユニコード。
545 名前:nobodyさん mailto:sage [2008/10/02(木) 19:56:12 ID:???] >>543 >>544 d 俺がヴァカですた orz
546 名前:nobodyさん mailto:sage [2008/10/02(木) 20:16:40 ID:???] >>544 > 「か」+「”」 > (か+だくてんのちょんちょん) > > と解釈されるので、 知ったかレスうざい。
547 名前:nobodyさん mailto:sage [2008/10/02(木) 21:16:12 ID:???] utf-8はstrlenじゃなくてmb_strlenつかえ
548 名前:たま ◆ExGQrDul2E [2008/10/03(金) 03:41:27 ID:hbK/EmaX] PHP proxyのチェック プロ串をチェックするため、こんな関数を使っています。 $HTTP_CONNECTION = $_SERVER["HTTP_CONNECTION"]; $HTTP_REFERER = $_SERVER["HTTP_REFERER"]; $HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"]; $HTTP_CLIENT_IP = $_SERVER["HTTP_CLIENT_IP"]; $HTTP_FORWARDED = $_SERVER["HTTP_FORWARDED"]; $HTTP_IF_MODIFIED_SINCE = $_SERVER["HTTP_IF_MODIFIED_SINCE"]; $HTTP_MAX_FORWARDS = $_SERVER["HTTP_MAX_FORWARDS"]; $HTTP_PROXY_CONNECTION = $_SERVER["HTTP_PROXY_CONNECTION"]; $HTTP_SP_HOST = $_SERVER["HTTP_SP_HOST"]; $HTTP_TE = $_SERVER["HTTP_TE"]; $HTTP_VIA = $_SERVER["HTTP_VIA"]; $HTTP_X_FORWARDED_FOR = $_SERVER["HTTP_X_FORWARDED_FOR"]; $HTTP_X_LOCKING = $_SERVER["HTTP_X_LOCKING"]; $HTTP_XONNECTION = $_SERVER["HTTP_XONNECTION"]; $HTTP_XROXY_CONNECTION = $_SERVER["HTTP_XROXY_CONNECTION"]; しかし、携帯版の最強な串 sv0436.dc01.axelmark.net/ でアクセスした場合。何一つproxyの環境変数を吐かないため、弾きようがありません。他にもproxyを示す決定的な環境変数があるのでしょうか?
549 名前:nobodyさん mailto:sage [2008/10/03(金) 04:06:16 ID:???] それに限らず環境変数吐かないproxyは検出しようがない
550 名前:たま ◆ExGQrDul2E [2008/10/03(金) 04:14:44 ID:hbK/EmaX] >>549 携帯で sameha.net/ にアクセスしてください。 拒否されているのですよ... どうやっているのでしょうか...
551 名前:たま ◆ExGQrDul2E [2008/10/03(金) 04:15:43 ID:hbK/EmaX] 携帯でとういうのは、携帯で串を経由して という意味です。 わかりにくくてすいません。
552 名前:nobodyさん mailto:sage [2008/10/03(金) 04:28:08 ID:???] 逆引きできるか調べて見れ
553 名前:nobodyさん [2008/10/03(金) 04:47:08 ID:agLBvyd6] 掲示板のログを保存する場合、データベースを使う方法と、 テキスト形式のログファイルに書き込む方法があると思いますが、 両者の利点、欠点は何ですか?
554 名前:nobodyさん mailto:sage [2008/10/03(金) 04:49:20 ID:???] ぐぐれば一瞬で分かんだろ
555 名前:nobodyさん mailto:sage [2008/10/03(金) 04:50:44 ID:???] >>553 ファイル形式に保存する場合は、容量はOSの制限を受けるため、 上限が生じるのが欠点ですが、速度が速いのが利点。 逆に、データベースに保存する場合、容量が2PB(2PTとは2000TBのこと)と実質上容量の制限が ないのが利点ですが、速度が遅いのが欠点かな。
556 名前:553 mailto:sage [2008/10/03(金) 05:08:55 ID:???] >>555 素早く、かつ大変ご丁寧なレスをありがとうございます。 ポイントは「速度」と「ファイルの容量」なのですね。 ということは、例えば「1月の書き込み」「2月の書き込み」…などと ファイルを分けて保存すれば、1つ1つのファイルの容量は大きくならないので、 ファイル形式で十分ということでしょうか? (正直、データベースの使い方がよく分からないので、 ファイル形式で良ければそれで済ませたい、という思いから質問させていただいてます)
557 名前:nobodyさん mailto:sage [2008/10/03(金) 05:13:16 ID:???] 一度DB使ったらログファイルなんて使ってらんないな
558 名前:nobodyさん mailto:sage [2008/10/03(金) 05:20:21 ID:???] >>556 いいえ違います。 DBは膨大なデータを扱うことを想定して設計されているので、 データが多くなれば多くなるほどDBのほうがデータの検索速度は高速です。 ファイルの場合、ファイルシステムにもよりますが、データの検索速度はDBに比べ低速です。 またファイルの場合、効率的に読み込む手段が用意されていない言語の場合、 データが多くなると読み込みだけで時間を要します。 ファイルの利点はSQLを必要としないことぐらいです。 これはSQLを覚える必要がないのと、 SQLインジェクション等のSQL特有の攻撃を意識しなくてすむことぐらいです。 特段理由がなかったらDBを使うべきです。
559 名前:553,556 mailto:sage [2008/10/03(金) 05:42:13 ID:???] >>558 分かりやすいレスでとても感謝しています。 DBの利点がよく理解できました。 今日からDBを勉強することにします。 どうもありがとうございました。
560 名前:nobodyさん mailto:sage [2008/10/03(金) 06:07:45 ID:???] >>558 2chがどうして、DBを使っていないのか、そこからお勉強しましょう。 明らかに経験不足です。
561 名前:553 mailto:sage [2008/10/03(金) 06:21:24 ID:???] >>560 すみません、>>559 で書き込んだ手前、質問しにくいのですが、 理由を教えていただけますでしょうか?簡単で構いませんので・・・。 2chはdatファイル(=テキストファイル?)ですよね。 また、検索や読み出し(ログの表示)をあまり必要としない場合は、 データベースの利点は少ないということでしょうか?
562 名前:nobodyさん mailto:sage [2008/10/03(金) 07:32:23 ID:???] >>561 2chがどうして、DBを使っていないのか、そこからお勉強しましょう。 明らかに経験不足です。
563 名前:nobodyさん mailto:sage [2008/10/03(金) 08:00:21 ID:???] >>562 2chってDB管理だと思ってた 専ブラで取得しやすいようにdatでも見れるようにしてるのかと・・・
564 名前:nobodyさん mailto:sage [2008/10/03(金) 08:03:43 ID:???] DBは「有能な協力者を1人雇う」と考えればいい。 便利だが、いろいろ気遣いも必要になる。 datファイルの場合は、少し心細いが好きなようにやれて小回りがきく。
565 名前:nobodyさん mailto:sage [2008/10/03(金) 08:27:22 ID:???] >>562 どうみても経験不足はあなたです。 本当にありがとうございました。 2chがどうしてDBを使ってないのか説明してみw
566 名前:nobodyさん mailto:sage [2008/10/03(金) 08:43:29 ID:???] >>565 てめぇの馬鹿さ加減には、父ちゃん情けなくて涙が出てくらぁ
567 名前:nobodyさん mailto:sage [2008/10/03(金) 08:45:08 ID:???] >>566 ごめんね馬鹿なのw だからどうして2chがDB使ってないか説明してよw
568 名前:nobodyさん mailto:sage [2008/10/03(金) 08:50:18 ID:???] >>567 2chがどうして、DBを使っていないのか、そこからお勉強しましょう。 明らかに経験不足です。
569 名前:nobodyさん mailto:sage [2008/10/03(金) 08:51:33 ID:???] ルールを守ってない時点でお前は質問者じゃない。ただの玩具。
570 名前:nobodyさん mailto:sage [2008/10/03(金) 08:54:42 ID:???] >>582 2chは負荷かかるし検索機能とかないだろ ただ書き込んで表示してるだけ ようするに掲示板につける機能によりけり 2chの話を出すのはマヌケ あとあと掲示板にいろいろな機能を持たせたいのなら 最初からDBで設計しておいたほうがいい 2chは速さを追求した結果前時代的なシステムで拡張が困難
571 名前:nobodyさん mailto:sage [2008/10/03(金) 08:55:44 ID:???] >>582 に期待
572 名前:570 mailto:sage [2008/10/03(金) 08:57:51 ID:???] >>562 だ 顔洗ってくる
573 名前:nobodyさん mailto:sage [2008/10/03(金) 09:05:34 ID:???] >>570 色々とピント外れだな。 > 2chは負荷かかるし検索機能とかないだろ 冒頭から間違っているし。
574 名前:nobodyさん mailto:sage [2008/10/03(金) 09:13:45 ID:???] >>561 DBに興味があるならやってみなよ 両者の比較なんて大規模システム運用するわけじゃないんだから パフォーマンスに目に見える差異は出てこない ファイルは専用の関数だけ覚えれば扱えるけど DBはいろいろ覚えることがあるから どういうものか触れて勉強するのもいいと思う Rapid開発になるとフレームワークを使うようになるし そうするとDBが必須になってくるからね 慣れれば高速に開発できるのもDBの利点 >>573 だって無いだろ
575 名前:nobodyさん mailto:sage [2008/10/03(金) 09:21:00 ID:???] > 2chは負荷かかるし検索機能とかないだろ 冒頭から間違っているし。 > 2chは負荷かかるし検索機能とかないだろ 冒頭から間違っているし。 > 2chは負荷かかるし検索機能とかないだろ 冒頭から間違っているし。 > 2chは負荷かかるし検索機能とかないだろ 冒頭から間違っているし。
576 名前:nobodyさん mailto:sage [2008/10/03(金) 10:09:02 ID:???] 2chは負荷かからず、検索機能とかがある説が急上昇
577 名前:nobodyさん mailto:sage [2008/10/03(金) 10:16:28 ID:???] find.2ch.net
578 名前:nobodyさん mailto:sage [2008/10/03(金) 10:22:59 ID:???] >>577 何ゆえにPHP版を
579 名前:nobodyさん mailto:sage [2008/10/03(金) 10:29:20 ID:???] >>577 投稿をDBにいれるのと、 検索エンジンがインデックスをDBに作るのとはまた別の話だろ
580 名前:nobodyさん mailto:sage [2008/10/03(金) 10:32:24 ID:???] >>579 誰も同じ話とは言っていないような???
581 名前:nobodyさん mailto:sage [2008/10/03(金) 10:33:20 ID:???] >>576 しまいにはDB使わずナマズさん使ったほうが速いお とか言いだしそうだな(わらう)
582 名前:nobodyさん mailto:sage [2008/10/03(金) 10:37:06 ID:???] >>579 find.2ch.netがDBかどうかなんて話してないだろw
583 名前:nobodyさん mailto:sage [2008/10/03(金) 10:49:34 ID:???] ひろゆきや狐やrootがDB分かんないからログファイルなんじゃね
584 名前:nobodyさん mailto:sage [2008/10/03(金) 10:55:46 ID:???] >>583 お前は本当にその3人だけでやってると思ってんのか? ってか、ひろゆきはDBわかるだろ
585 名前:nobodyさん mailto:sage [2008/10/03(金) 11:45:30 ID:???] ドラゴンボールが何だっての?
586 名前:nobodyさん [2008/10/03(金) 11:58:56 ID:/eEzlvvL] ディレクトリ構造?ってどうしてますか phpファイルを機能別に分けたりしてますか?
587 名前:nobodyさん mailto:sage [2008/10/03(金) 12:20:21 ID:???] 好きにしろ
588 名前:nobodyさん [2008/10/03(金) 15:56:15 ID:xSW6clzh] すみません。普通のPHPファイルとAjaxの部分とで同じSESSION変数を使いたいんですが、 データの整合性とか、大丈夫ですか?
589 名前:nobodyさん [2008/10/03(金) 16:06:53 ID:rpr6AsK7] PHPからMySQLに格納すると文字化けするので、コネクトするたびに、 $sql = "SET NAMES utf8"; $result = mysql_query($sql); とクエリを投げるようにして、とりあえず解決したのですが、 あまりスマートじゃないですよね? 上のPHP2文がある/無い で、文字化けする/しない という結果になるんですが、 この結果から、どの部分で文字コードがおかしくなっているのか予想ってできますでしょうか?
590 名前:nobodyさん mailto:sage [2008/10/03(金) 16:21:01 ID:???] >>589 コネクトするたびにって、、、1ページ読み込むのに何回もコネクトしてるってこと? DBのホストを分散しているとかは別だけど、もしそうならスクリプトを1から作り直したほうがいい それかmysqlのコンフィグを書き換えデフォをUTFにする
591 名前:nobodyさん [2008/10/03(金) 16:53:27 ID:rpr6AsK7] >>590 いや、データベースのクラスがあって、 そのクラスをnewするたびにconnectしています。 基本的に1ページには1回newして、そのオブジェクトを使うので、 1ページ=1connectです。 PHPのファイルがUTF-8で、my.cnfの設定もUTF-8に統一している (コンソールからMySQLにつないで、statusで確認済み)のですが、 あと文字コードに関わる部分ってどこがあるでしょうか?
592 名前:nobodyさん mailto:sage [2008/10/03(金) 17:13:26 ID:???] >>591 クラスにしているなら特にSET NAMEを複数書く必要もないしスマートだと思うけど 格納するクエリが文字化けしてなく、格納した時にすでに文字化けしているなら他に原因は思いあたらない
593 名前:nobodyさん mailto:sage [2008/10/03(金) 18:08:56 ID:???] >>588 javascriptはアクセス先のPHPへ同じセッションIDを通知するから、 ページ全体を表示する際に生成したセッションと同一と言える
594 名前:nobodyさん mailto:sage [2008/10/03(金) 18:10:44 ID:???] >>591 何にせよmysql側で対応したいなら、 MySQL「サーバ」とMySQL「クライアント」の文字コードを統一しないとな PHPの文字コードじゃないから注意だぞ(PHPからMySQLクライアント(ドライバ)に渡る際に変換されるから)
595 名前:nobodyさん mailto:sage [2008/10/03(金) 18:38:33 ID:???] >>589 その説明は、俺がmy.cnfの設定方法を含めて前レスで詳しく説明したから、 それを見てくれ。
596 名前:211 [2008/10/03(金) 19:14:51 ID:XpYjXbv/] もう誰も興味ないと思いますが・・・というか、結果的にかなり場違いな 質問でしたが、一応解決したので書いておきます。 結果的には oci8.so をユニバーサルバイナリにしてみたら動きました。 理由は説明できないので聞かないでください。 最初に書かないといけなかったような気がしていますが、環境は、 $ uname -a Darwin macbook.example.com 9.5.0 Darwin Kernel Version 9.5.0: Wed Sep 3 11:29:43 PDT 2008; root:xnu-1228.7.58~1/RELEASE_I386 i386 です。 いろいろ試行錯誤していて、以前指摘された "DYLD_PRELOAD"に相当する ものは"DYLD_INSERT_LIBRARIES"ではないかと思い、試していると、 $ export DYLD_LIBRARY_PATH=/usr/local/instantclient_10_2 $ php ocitest.php (成功) $ /usr/sbin/httpd dyld: could not load inserted library: /usr/local/instantclient_10_2/libclntsh.dylib.10.1 Trace/BPT trap こうなりました。全然理解できませんが。 ユニバーサルバイナリにしたら良いかもと勝手に思い、 $ pecl bundle oci8 $ CFLAGS='-arch i386 -arch x86_64 -arch ppc -arch ppc64' LDFLAGS='-arch i386 -arch x86_64 -arch ppc -arch ppc64' ./configure --with-oci8=instantclient,/usr/local/instantclient_10_2 --disable-dependency-tracking $ sudo make install これで試したらすんなり動きました。 おわり。
597 名前:211 [2008/10/03(金) 19:23:49 ID:XpYjXbv/] >>596 途中一行抜けてました。 $ export DYLD_LIBRARY_PATH=/usr/local/instantclient_10_2 $ export DYLD_INSERT_LIBRARIES=/usr/local/instantclient_10_2/libclntsh.dylib.10.1 $ php ocitest.php あと、せっかくなのでちょっと追記。 $ file oci8.so oci8.so: Mach-O universal binary with 4 architectures oci8.so (for architecture i386): Mach-O bundle i386 oci8.so (for architecture x86_64): Mach-O 64-bit bundle x86_64 oci8.so (for architecture ppc7400): Mach-O bundle ppc oci8.so (for architecture ppc64): Mach-O 64-bit bundle ppc64 $ file oci8.so.orig (動かなかったoci8.so) oci8.so.orig: Mach-O bundle i386 $ file libclntsh.dylib.10.1 libclntsh.dylib.10.1: Mach-O dynamically linked shared library i386
598 名前:nobodyさん mailto:sage [2008/10/03(金) 19:25:49 ID:???] 自分のblogに書いといてくれ
599 名前:nobodyさん mailto:sage [2008/10/03(金) 19:26:25 ID:???] ごくろうさん
600 名前:211 [2008/10/03(金) 20:00:31 ID:XpYjXbv/] すみません。。。 pc11.2ch.net/test/read.cgi/mac/1216824430/ に似たような事例があって、いくつかわかりました。 標準でインストールされている httpd は x86_64 で動作しているようです。 アクティビティモニタ上で "Intel (64ビット)" と表示されていました。 で、oci8.so はユニバーサルバイナリにすることでロードされましたが、 その中で使っている libclntsh.dylib は i386 のバイナリしかないわけで ocitest.php をapacheに実行させたら Trace/BPT trap で失敗してました。。。 なかなか上手くいかないもんだのう。。。
601 名前:nobodyさん mailto:sage [2008/10/03(金) 20:28:26 ID:???] 嫌がらせか
602 名前:588 mailto:sage [2008/10/03(金) 21:05:21 ID:???] >>593 どうも同一のセッションIDを送ってくれるので、大丈夫ということを知り安心しました。 回答つかないかと思ってあせってたんです(;´д`) 本当にありがとうございました。助かりました。
603 名前:nobodyさん [2008/10/03(金) 22:38:52 ID:19ebb2MR] $array[0]["name"] $array[1]["name"] $array[2]["name"] となっている配列があったとして、 nameの中が空の場合、その配列を削除したいと思っています。 ひとつずつIFで条件分岐する以外で方法はないでしょうか?
604 名前:nobodyさん mailto:sage [2008/10/03(金) 23:42:28 ID:???] 機能別にすることもあるし分けないこともある。 本体とログとかさらにいくつもファイル複数あるなら分けたほうがいい気はする。
605 名前:nobodyさん mailto:sage [2008/10/03(金) 23:58:50 ID:???] >>603 なさげ。 普通にif文でやってください。 で、ついでに配列に格納する段階でどうにかするという方向性でいったら?
606 名前:nobodyさん [2008/10/04(土) 00:02:17 ID:qepvww6d] フレームワーク使ってるかってどうやってわかるんでしょうか?
607 名前:nobodyさん mailto:sage [2008/10/04(土) 00:25:18 ID:???] >>606 デフォルトのまま使えば特徴は出るがそんなのはいくらでも隠蔽できるし 使ってる本人がこのサイトはなんたらのフレームワークで構築されてます みたいな自己紹介してないとわからない
608 名前:nobodyさん [2008/10/04(土) 00:29:35 ID:qepvww6d] >>607 なるほど。 ご回答ありがとうございました
609 名前:nobodyさん mailto:sage [2008/10/04(土) 09:35:14 ID:???] どうしてもモジュール単位でクラス化していくと、 require_onceの数が多くなってしまいます。 ファイルをインクルードするためのオーバーヘッドは気にしなくて大丈夫でしょうか?
610 名前:nobodyさん mailto:sage [2008/10/04(土) 11:25:40 ID:???] >>609 ファイル数が多いならrequire_onceよりrequireを。 onceは重複チェックの分オーバーヘッドがrequireよりありんす。
611 名前:nobodyさん mailto:sage [2008/10/04(土) 16:11:14 ID:???] mailって内部的には、sendmailを起動している、って WEBの解説ページに書いてあったんだけど、 それってUNIX環境だけだよね? Windowsでは、起動しているメールサーバーソフト(mercuryとか)を 使って送信してるんだよね?