【PHP】下らねぇ質問はID出して書き込みやがれ 102
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/12/18(土) 20:07:33ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 101
http://hibari.2ch.net/test/read.cgi/php/1289793607/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0204nobodyさん
2010/12/30(木) 20:48:17ID:???0205nobodyさん
2010/12/30(木) 22:54:02ID:???0207nobodyさん
2010/12/31(金) 00:20:55ID:???隔離でずっとAjaxやっててね
0208nobodyさん
2010/12/31(金) 02:05:04ID:???表示する中身はxmlに書いてて、
ページを表示する際に読み込んで生成してたのですが、
毎回読み込まずに、例えばメモリにxmlの中身を保持してるのを取ってくるとかは
できますか?共有メモリ?
アパッチ起動時に一回だけメモリに保持できるといいのですが、、
◯◯区分とか小さなマスタ情報は、
どう扱うのが良いのでしょうか><
0210nobodyさん
2010/12/31(金) 02:19:49ID:Oz9h13cuあっ、これは失礼しました。
【OS名】WindowsXP / Apatch
【PHPのバージョン】5.3だったか、、
会社に行かないと分かりません。
最新のxampp使用しました。
【連携ソフトウェア】MySQL
【質問内容】
208になります。
0211nobodyさん
2010/12/31(金) 02:22:18ID:???0212nobodyさん
2010/12/31(金) 02:25:00ID:???中級の下くらいの俺の知る範囲では出来ないかと。
セキュリティ的にOKならセッションorクッキーで保持するとか。
でも自サーバー上でだけの話ならxml毎回読み込みで問題ない気が。
別サーバーから取得してるなら初回だけ読んで、自サーバーにファイルorDB保存するとか。
0213nobodyさん
2010/12/31(金) 02:25:16ID:???早速ありがとう。
なるほど、そんな事ができるんですね。
ちと調べてみます。
0214nobodyさん
2010/12/31(金) 02:27:19ID:???ファイルの読み込みで何か問題あるの?
0215nobodyさん
2010/12/31(金) 02:33:42ID:???0216nobodyさん
2010/12/31(金) 02:35:16ID:Oz9h13cuありがとう。
DB兼Webサーバな環境です。
同時接続は多くて20台位なのですが、
可能な限りI/Oを減らしたかったのです。
メモリに入ってれば、区分名等を使う場合にも使えていいかな、と思った次第です。
明日本屋に行ってみます!
0217nobodyさん
2010/12/31(金) 02:35:44ID:???0218nobodyさん
2010/12/31(金) 02:36:39ID:???使った事ないから知らんけど
0219nobodyさん
2010/12/31(金) 02:42:23ID:???0222nobodyさん
2010/12/31(金) 06:16:39ID:???Wordpressのソースコードを読んでみたんですが、
どうしてクラスや関数を作らずに、たくさんのファイルに処理が小分けされているんですか?
なかにはPHPとHTMLが混ざっているところもあって、処理の流れが分かりにくいと思いました。
CakePHPのようにMVCで整理した方がいいんじゃないんですか?
何らかの合理的な理由があってそういう書き方がされているのだと思いますが、よくわかりません。
プログラマの方々がどんなふうに認識しているのか知りたいです。ご意見ください。
0224nobodyさん
2010/12/31(金) 11:36:29ID:???Ajaxも仕分け対象で、残念だったね・・・
0225nobodyさん
2010/12/31(金) 11:39:04ID:???0226nobodyさん
2010/12/31(金) 11:39:55ID:???0227nobodyさん
2010/12/31(金) 12:40:12ID:???http://hibari.2ch.net/test/read.cgi/php/1289117484/l50
0228nobodyさん
2010/12/31(金) 13:38:49ID:8g3NYefkその後また同じPHPファイルにアクセスが来るんですが、これって何が原因ですか?
xdebug入れてるとこうなるんですかね?
0229nobodyさん
2010/12/31(金) 13:47:33ID:???0230nobodyさん
2010/12/31(金) 14:25:08ID:8g3NYefk0231nobodyさん
2010/12/31(金) 14:59:28ID:XYm/hF3eホームページでの文字表示縦書きにしたいのですが
どうすればいいでしょうか
0232nobodyさん
2010/12/31(金) 14:59:50ID:8g3NYefk原因はMod_reqriteで、リンクが通ってないリクエストがIndex.phpにきてた事が判明しました。
お騒がせしました。
0233nobodyさん
2010/12/31(金) 15:20:47ID:???Webサイト制作初心者用質問スレ part222
http://hibari.2ch.net/test/read.cgi/hp/1291304974/
こちらへどうぞ
0234nobodyさん
2010/12/31(金) 15:24:44ID:XYm/hF3eありがとうございました
そちらで聞いてみます
0235nobodyさん
2010/12/31(金) 16:56:48ID:jORx8XGQMySQLから取り出してきた、
$shin[date] (ex.2010-12-31、date型)
に、
$kankaku[interval_t@] (@は1~20、中身はint型)
の数字の分だけ、●ヶ月先の計算をしたいです
こんな風に書いてるのですが文法エラーとなります、どう書けば良いかご教示ください。
($kankaku[interval_t@]を普通の数字に置き換えるとokなのですか)
for($loop=1;$loop<=20;$loop++){
$nextdate0 = date("Y-m-d", strtotime("$shin[date] + $kankaku['interval_t'.$loop] month"));
print "$nextdate0";
}
0236nobodyさん
2010/12/31(金) 17:07:11ID:???0237nobodyさん
2010/12/31(金) 17:14:08ID:???他に原因があるかもしれないが、とりあえず
$nextdate0 = date("Y-m-d", strtotime("{$shin['date']} + {$kankaku['interval_t'.$loop]} month"));
0238nobodyさん
2010/12/31(金) 17:15:45ID:???一応、検証に使ったソース
<?php
$shin['date'] = '2010-12-31';
$kankaku['interval_t1'] = 1;
$loop = 1;
$nextdate0 = date("Y-m-d", strtotime("{$shin['date']} + {$kankaku['interval_t'.$loop]} month"));
print $nextdate0;
?>
0239nobodyさん
2010/12/31(金) 17:17:09ID:???$nextdate0 = date("Y-m-d",strtotime($shin['date'].' + '.$kankaku['interval_t'.$loop].' month'));
まだこうしろよ・・・
0240nobodyさん
2010/12/31(金) 17:38:59ID:???言われてみればその通りですね;;
>>237-239
それぞれに分解して書けば良かったのですね。ありがとうございます!
0241nobodyさん
2011/01/01(土) 00:13:17ID:???0242nobodyさん
2011/01/01(土) 00:42:44ID:???http://hibari.2ch.net/test/read.cgi/php/1289117484/l50
0244nobodyさん
2011/01/01(土) 00:46:40ID:kBOtcIS2あるサイトで得られるHTMLにて、「href="〜"」の"〜"部分を抽出したいです。
いろいろと試してみましたが、サイトにあわせたコーディングが求めらてしまいました。
自分の拙さ(つたなさ)が理由で、サイトにあわせたコーディングをしていると思います。
お勧めのサンプルや、お勧めの関数などがあれば、教えてもらえれば嬉しいです。
0245nobodyさん
2011/01/01(土) 00:47:30ID:kBOtcIS20246nobodyさん
2011/01/01(土) 00:52:42ID:???http://hibari.2ch.net/test/read.cgi/tech/1268979408/
0248nobodyさん
2011/01/01(土) 00:59:37ID:???http://jp.php.net/manual/ja/domdocument.loadhtmlfile.php
0249nobodyさん
2011/01/01(土) 01:31:33ID:???// 読み込むファイル
$filename = "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($filename);
$a = $doc->getElementsByTagName("a");
for($i = 0; $i < $a->length; $i++) {
var_dump($a->item($i)->getAttribute("href"));
}
0254nobodyさん
2011/01/01(土) 15:29:42ID:xdZw+o32$PATH = "../".$_POST['ttm']."/";
$TEMPPATH = $PATH."html/";
とあるのですが、これの../とはどういう意味なんでしょうか?
0256nobodyさん
2011/01/01(土) 15:42:42ID:xdZw+o32../だけで一つ上の階層を出力できるなんて便利ですね!
0258nobodyさん
2011/01/01(土) 19:16:47ID:xdZw+o32<form method="post" action="./test.php">
の場合はドットが1つなんですがこの場合は「今扱っているファイルの一つ上の階層のディレクトリにあるtext.php」
ということになるのでしょうか?
ドット1個と2個の違いがどうも
0260nobodyさん
2011/01/01(土) 20:37:57ID:???../ 1個上
../../ 2個上
../../../ 3個上
つうかPHPの質問とちゃうで
相対パスはWebサイト作りの基礎やで
0261nobodyさん
2011/01/01(土) 20:44:10ID:xdZw+o32道理でphpのサイトめぐっても見当たらない訳やで!
ホンマ助かりますわー!
0262nobodyさん
2011/01/01(土) 20:52:36ID:???0263nobodyさん
2011/01/01(土) 22:28:36ID:Uob5Bi4b【PHPのバージョン】5.3.1
【連携ソフトウェア】MySQL, XAMPP
【XAMPPのバージョン】Windows ver 1.7.3
【MySQLバージョン】5.1.41
【MySQL文字セット】UTF-8 Unicode (utf8)
【MySQLの照合順序】utf8_unicode_ci
【質問内容】
DBから取得した全角文字が文字化けします。
解決策を教えてください。
【詳細】
1.MySQLに登録されたデータを取得する。
$res_result = mysql_query($sql);
2.連想配列に格納し、その結果をprintで出力する。
[ソース]
$mojicode = mb_detect_encoding($value);
print "$value の文字コードは $mojicode です。";
[結果]
$$rows[def]=???
??? の文字コードは UTF-8 です。
と半角文字は正しく出力されるのですが、全角文字が?で表示されます。
長文すみません、宜しくお願いします。
0264263
2011/01/01(土) 22:30:16ID:Uob5Bi4b追加情報です。
【PHP.iniの設定】
mbstring.detect_order:UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.encoding_translation:Off
mbstring.func_overload:0
mbstring.http_input:pass
mbstring.http_output:UTF-8
mbstring.internal_encoding:UTF-8
mbstring.language:Japanese
mbstring.strict_detection:Off
mbstring.substitute_character:no value
【PHPファイル】
<meta 〜 "text/html; charset=UTF-8" />
ファイルの文字コード:UTF-8 BOMなし
宜しくお願いします。
「半角文字は正しく出力される」というのはどれのこと?
あと、そのときブラウザの表示文字エンコードは何になってる?
エンコードを他の物に切り替えると???の部分が正しく表示されるってことはない?
0268nobodyさん
2011/01/01(土) 23:44:40ID:???MySQLはクライアント側も別途エンコーディング指定が必要
mysqli_set_charset($db, "utf8")
mysqliが無いならSET NAMESとか。
ちなみに"???"がUTF-8と判定されるのはdetect_orderのせい
0269263
2011/01/02(日) 00:07:31ID:sCIW7Ij+ご返答ありがとうございます。
ブラウザの表示文字エンコードは、
Unicode(UTF-8)です。
これは、PHPのmeta情報に
<meta 〜 "text/html; charset=UTF-8" />
と記載しているからだと認識しています。
また、ファイルの文字コードもUTF-8です。
> 「半角文字は正しく出力される」
すみません。半角文字の結果を消していました。正しくは下記をみてください。
【表示文字エンコード:Unicode(UTF-8)】
$$rows[abc]=GAME
GAME の文字コードは UTF-8 です。
$$rows[def]=???
??? の文字コードは UTF-8 です。
【表示文字エンコード:日本語(EUC)】
⇒文字化けします。
$$rows[abc]=GAME
GAME ・絖潟若 UTF-8 с
$$rows[def]=???
??? ・絖潟若 UTF-8 с
【表示文字エンコード:日本語(シフトJIS)】
⇒画面に何も表示されなくなります。
0270263
2011/01/02(日) 00:15:11ID:sCIW7Ij+ご返答ありがとうございます。
調べて確認してみます。
detect_orderは始めコメントアウト化されており、
DBから取得した結果がASCIIになっておりました。
DBとの文字コードを合わせる必要があると思い、
detect_orderにUTF-8を指定しましたが、
問題ありますか?
コメントアウト化されていた時から既に
printした結果が???と文字化けされていました。
0271nobodyさん
2011/01/02(日) 00:17:06ID:???もし正しいデータが入ってるとすれば正しく取り出せてないのかもな
0272nobodyさん
2011/01/02(日) 00:18:24ID:???0273263
2011/01/02(日) 00:50:50ID:sCIW7Ij+おっしゃる通り、
SET NAMESを使用する事で解決しました。
[変更前ソース]
$db = mysql_select_db( $dbName, $res_dbcon );
$res_result = mysql_query($sql);
[変更後ソース]
mysql_query("SET NAMES utf8");
$db = mysql_select_db( $dbName, $res_dbcon );
$res_result = mysql_query($sql);
[変更後の結果]
$$rows[abc]=GAME
GAME の文字コードは UTF-8 です。
$$rows[def]=ゲーム
ゲーム の文字コードは UTF-8 です。
助かりました、本当にありがとうございました。
>>266-272
ご返答頂けた方々、ありがとうございました。
0274263
2011/01/02(日) 00:56:36ID:sCIW7Ij+お礼と返答です。
>>271
ご返答ありがとうございます。
テーブルのキャラセットとは何を指すのでしょう?
照合順序はutf8_unicode_ciで、列の種別はtext型です。
>>272
ご返答ありがとうございます。
nkfではありませんが、
PHP上でmb_convert_encodingを使用し文字コードを変換した場合、
結果は変わらず文字化けしたままでした。
0275nobodyさん
2011/01/02(日) 01:02:29ID:???SET NAMES でもとりあえずは問題ないだろうけど、
PHP5.3なら mysql_set_charset() を使用したほうがいい。
理由は過去スレまたはググってください。
0276nobodyさん
2011/01/02(日) 01:04:22ID:???注意:
文字セットを変更するにはこの方法を使うことを推奨します。 mysql_query() で SET NAMES .. を実行する方法はお勧めできません。
0277nobodyさん
2011/01/02(日) 01:05:15ID:???テーブルのキャラクタセットと言われてわからないってことは別の人がDB初期設定やってるだろうから
説明は差し控える
はっきり言って>>264にある設定なんてmeta以外はやらなくてもいいようなどうでもいい設定だがな
0278nobodyさん
2011/01/02(日) 01:07:24ID:???MySQLの照合順序をutf8_unicode_ciにしていても
Tableの定義でそのフィールドの照合順序が異なる設定になっている場合があるので
確認したほうがいいという意味だろう。
0279nobodyさん
2011/01/02(日) 01:17:16ID:???いや、SET NAMES はクライアントが使用する文字コードをMySQLに
通知するのが目的だからTableのキャラクタセットの設定とは異なる。
MySQLはクライアントから送信された文字を既定の文字コードとして
解釈し、照合順序で設定したキャラクタセットに勝手に変換する。
読み出す場合はその逆。
0280263
2011/01/02(日) 01:32:59ID:sCIW7Ij+>別の人がDB初期設定やってるだろう
いえ、私がDBの設定を行っていますが、
phpMyAdminにキャラクタセットの項目が
見つからなかった為、お聞きしました。
>>278
なるほど、理解できました。
DBとTableの照合順序は統一しており、
再確認した結果、全て一致していました。
0281263
2011/01/02(日) 01:44:19ID:???ご指摘ありがとうございます。
確認したところSET NAMESは非推奨となっていました。
mysql_query("SET NAMES utf8");を
mysql_set_charset("utf8");に変更しました。
文字化けせずに正しく表示されました。
ありがとうございます。
(そろそろsageておきます)
0283nobodyさん
2011/01/02(日) 15:30:33ID:C0ta8JClおすすめできないと書いてるけどPDOじゃSET NAMESでやるしかないですよね?
0284nobodyさん
2011/01/02(日) 15:44:41ID:UqNSlP1V[環境]
共用レンタルサーバー
PHP 5.2.12
OS Linux 2.6.27.18-25
アパッチ 2.2.14
サーバープロバイダー ギガレンタルサーバー(ttp://gigasrv.jp/)
コンパネ cPanel X
[やりたいこと]
空メールでメンバー登録
[出来たこと]
メールを受信して、パイプを使ってその内容をスクリプトへ渡す。
[問題]
メールを送信した側に、次のようなエラーが返信されてしまいます。
このようなエラーを返信しないようにしたい。
※長いのでレスをまたがせていただきます。
0285284
2011/01/02(日) 15:46:20ID:UqNSlP1V-------- ▼ここからメール内容▼ ---------
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
pipe to |/※スクリプトへのパス
generated by ※空メールのアドレス
The following text was generated during the delivery attempt:
------ pipe to |/※スクリプトへのパス
generated by ※空メールのアドレス ------
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/imagick.so' - libMagickWand.so.2: cannot open shared object file: No such file or directory in Unknown on line 0
X-Powered-By: PHP/5.2.12
Set-Cookie: CAKEPHP=e3bd5f3b116b2491e08f2c3ee81b48c0; expires=Mon, 10-Jan-2011 14:15:36 GMT; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Content-type: text/html; charset=UTF-8
------ This is a copy of the message, including all the headers. ------
※以下、略
-------- ▲ここまでメール内容▲ ---------
.htaccess に php_flag display_errors Off を書いてもダメで、スクリプトに ini_set( "display_errors", "Off"); を追加してもモチロンだめでした。
サーバーの管理者に相談したほうが良いのでしょうか?
※熱っぽいのでこれから保健センターに行ってきます。返信が遅れるかもしれませんがどうかご容赦ください。よろしくお願いします。
0286nobodyさん
2011/01/02(日) 18:41:15ID:???0287284
2011/01/02(日) 19:24:17ID:UqNSlP1Vやはりそうですか。
ひとつ気になるのは、ブラウザでPHPを走らせた場合はもとより、Cron でPHPプロセスを起動した場合にも上記のようなメッセージを見たことがないことです。
なので、自分のやり方しだいではエラーを表示させないようにも出来るのではないかと思うのですが。
ちなみに、このエラーは PHP のセッティングに問題があると言う認識でよろしいのでしょうか。
答えをいただきながらの追加の質問ですが、お答えいただければ幸いです。
0288nobodyさん
2011/01/02(日) 19:41:56ID:jMmDteG70291nobodyさん
2011/01/02(日) 20:15:17ID:???0292nobodyさん
2011/01/02(日) 20:30:45ID:???代替手段としてコンストラクタに
PDO::MYSQL_ATTR_READ_DEFAULT_FILE と
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP を渡せば可能
>>287
> libMagickWand.so.2: cannot open shared object file
って事だからMTAから起動した時の環境変数PATHが違うんだろうね
ちなみにPHP起動時のエラー表示に関係する設定は display_startup_errors
0294284
2011/01/02(日) 22:41:32ID:UqNSlP1V先ほどサポセンへ相談メールを送りました。
>display_startup_errors
あ、そうでした。
これも一応ダメもとで試しては見ましたがやはり結果は同じでした。
サポートの対応など状況が変化しましたら、また改めて報告させていただきます。
0296nobodyさん
2011/01/03(月) 00:53:11ID:???毎ページの広告をPHPで携帯とPC振り分けてみたのですが、
気にするほど負荷がかからない程度なのですかね?
0299nobodyさん
2011/01/03(月) 07:18:03ID:???0300nobodyさん
2011/01/03(月) 14:51:49ID:???■ このスレッドは過去ログ倉庫に格納されています