【PHP】下らねぇ質問はここに書き込みやがれ 69
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/27(火) 18:04:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0038nobodyさん
2008/05/28(水) 23:01:37ID:???0039nobodyさん
2008/05/28(水) 23:04:10ID:???004036
2008/05/28(水) 23:23:55ID:Atkwe23Pありがとうございました。期待する動作ができました
004128
2008/05/28(水) 23:35:57ID:brAZ0jIaGET **** HTTP/1.0 の **** の部分が
$_SERVER['REQUEST_URI'] にそのまま入ってきてるだけでした。
なぜ同じような環境で、リクエストの仕方が変わってくるのかはまだ解明していませんが。
それでは失礼しました。
0042nobodyさん
2008/05/28(水) 23:48:19ID:???<data>
<log>
<date>2008/05/27</date>
<name>hoge1</name>
</log>
<log>
<date>2008/05/28</date>
<name>hoge2</name>
</log>
</data>
こんな感じの中に三つ目の<log>を入れるにはどうしたらいいのでしょうか。
今までは.logとか.datに書き込みだったのでfputs()だったのですが、
XMLにfputsするとXMLがおかしくなるみたいです・・・;
0045nobodyさん
2008/05/29(木) 02:41:16ID:???XML ドキュメントを操作したかったら
DOMDocument や SimpleXML を使いな。
$xml = '<?xml version="1.0" encoding="UTF-8"?><data />';
$data = new SimpleXMLElement($xml);
$log = $data->addChild('log');
$log->addChild('date', '2008/05/27');
$log->addChild('name', 'hoge');
echo $data->asXML();
0046nobodyさん
2008/05/29(木) 09:53:26ID:???特定文字列を置換して表示したいのですが、
どうすれば良いですか?
0047nobodyさん
2008/05/29(木) 09:54:40ID:smrRJpNe他サイトのFORMのGETの結果を取得して
特定文字列を置換して表示したいのですが、
どうすれば良いですか?
また来ます。
0048nobodyさん
2008/05/29(木) 10:38:06ID:???・特定文字列を置換
・表示
どれがわからんの?
0049nobodyさん
2008/05/29(木) 13:13:54ID:NlmBigbp[環境]
ApacheFriends XAMPP (basic package) version 1.6.6a ######
Apache 2.2.8
MySQL 5.0.51a
PHP 5.2.5 + PHP 4.4.8 + PEAR
このページ→ttp://kawama.jp/archives/2005/12/mysql_error_136.html
>ググってみても、それらしきソースは見つからない。そこでmy.iniを見てみると、
>なんだか見慣れないオプションが設定されている。
>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
>http://www.limy.org/program/db/mysql/mysql_option.html
>↑このサイトによると、「他ベンダーのデータベースやバージョンの違うMySQLと
>の互換性の>為に使用します。詳細は不明です。」とのこと。
>とりあえずコメントアウトしてMySQL再起動してみたら、見事解決。。。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
をコメントアウトしたいのですが、【my.ini】が見つかりません。
C:\WINDOWS\my.iniには【sql-mode=…】の記述はないし、
C:\xampp\mysql\bin\my.cnfにもそういった記述はありませんでした。
一体どこにあるのでしょうか?
0050nobodyさん
2008/05/29(木) 13:21:16ID:???0051nobodyさん
2008/05/29(木) 18:25:23ID:???configureからやり直しで再インストールするしかないですか?
0052nobodyさん
2008/05/29(木) 18:30:11ID:jCzn3hSF0053nobodyさん
2008/05/29(木) 18:34:17ID:2c4uBvQ0アミノ酸まで分解とまではいかなくても蛋白質構造が胃酸で変性しないのですか?
異常プリオンとは熱・酸に冒されないほど化学的に安定した構造なのでしょうか?
0054nobodyさん
2008/05/29(木) 19:08:32ID:???--with-gdを付けないでビルドしたんなら、そりゃconfigureからやり直しだろう
どうやってインストールしたかも書かないのはエスパー希望ですか?
0055nobodyさん
2008/05/29(木) 19:24:15ID:UIFzCbrIやり方として配列に あ〜ん を一文字づつ入れてwhileで処理する以外にスマートな方法ないですか?
事前に配列に入れておかなくても、数値のfor処理みたいに
繰り返し一周ごとに文字を あ→い みたいに進める方法があればいいんですが。
005642
2008/05/29(木) 19:28:09ID:QTbXsS7l大体はわかりましたが、
data.xmlというXMLファイルを開いて書き込むにはどうすればいいのでしょうか
0058831
2008/05/29(木) 21:10:20ID:6osKbEoJそうですかー。
正規表現も あ-ん とかないですもんね。
レスありがとうございました。
0059nobodyさん
2008/05/29(木) 21:11:35ID:???かなり無理やり
mb_language("ja");
mb_internal_encoding("sjis");
for ($i=0xb1; $i<0xde; $i++) {
echo mb_convert_kana(chr($i),"H");
}
0060nobodyさん
2008/05/29(木) 21:59:46ID:???あ-んに置き換えて質問したと予想
0062nobodyさん
2008/05/29(木) 22:24:13ID:???0063nobodyさん
2008/05/30(金) 00:36:16ID:zkzWC96Ufoo.php
<?php
if (!$_GET['foo']) header('HTTP/1.1 404 Not Found');
echo "foo is true";
?>
こう書いて foo.php にアクセスしても foo is true となってしまいます
<?php以前には何も書いてないのでheader以前の出力はないと思うんですけど。。。
0064nobodyさん
2008/05/30(金) 00:44:37ID:???0065nobodyさん
2008/05/30(金) 01:30:16ID:???0066nobodyさん
2008/05/30(金) 01:30:31ID:zkzWC96U0067nobodyさん
2008/05/30(金) 01:37:00ID:???print_r ($_GET['foo']);
0068nobodyさん
2008/05/30(金) 01:44:20ID:???でアクセス
0069nobodyさん
2008/05/30(金) 02:02:55ID:???そりゃ、header出力後に処理を継続してるんだからechoされるのは当然だと思うんだが。
404ヘッダー吐いたからと言って処理は停止したりせんよ。
0070nobodyさん
2008/05/30(金) 06:26:13ID:???0071nobodyさん
2008/05/30(金) 09:27:42ID:???0072nobodyさん
2008/05/30(金) 10:29:07ID:2R6P0FMxルートディレクトリにある.htaccessに設定したinclude_pathを
下のディレクトリにあるスクリプトが実行されたとき
そのディレクトリにある.htaccessでinclude_pathを再定義したいのですが
うまくいきません。
このようなことはできないのでしょうか?
0073nobodyさん
2008/05/30(金) 10:33:04ID:2R6P0FMx再定義したファイルが別のファイルだったという
単純なオチでした。スレ汚しごめんなさい。
0074nobodyさん
2008/05/30(金) 11:00:15ID:jYsEwVCp全く役に立たないレスばかりでした。もう、このスレには絶対に来ません。
0075nobodyさん
2008/05/30(金) 11:06:47ID:???もう来ないんじゃどうしようもないか。
俺もたぶん来ないけどな。
0076nobodyさん
2008/05/30(金) 11:13:15ID:???0078nobodyさん
2008/05/30(金) 12:42:33ID:???もうATDTくらいしか覚えてねえや
0079nobodyさん
2008/05/30(金) 16:48:45ID:Dv5a9ryj以下のように'=&'とやっているコードを見かけるのですが
どのような意味があるのでしょうか?
あるのとないのでは動作に影響があったりするものでしょうか?
$obj =& new Classname($param);
テンプレート5-18に書かれているように
パフォーマンスの目的だけで参照渡しにしているだけ
なのでしょうか。
0080955
2008/05/30(金) 16:55:17ID:83eH6Skx何か良いものってありますでしょうか?
0081nobodyさん
2008/05/30(金) 17:23:14ID:???pearのsmartIRCっていうのを使おうとしてるんですが、複数chに同時接続ってできないんでしょうか?
0082nobodyさん
2008/05/30(金) 17:23:47ID:???アップロードの処理
http://jp.php.net/manual/ja/features.file-upload.php
fgetcsv
http://jp.php.net/manual/ja/function.fgetcsv.php
0083nobodyさん
2008/05/30(金) 17:47:41ID:???環境
PHP 5.2.5
win XP
IIS
wwwrootじゃない場所にある画像を表示するために
header("Content-type: image/jpeg");
$file = "元画像";
$file2 = "新ファイル";
$img = imagecreatefromjpeg($file);
$flg = imagejpeg($img);
//$flg = imagejpeg($img,$file2);
$flg = imagedestroy($img);
というソースを組んだのですが、画像を表示できません。
imagejpegに保存先の引数を与えると、新しい画像ファイルが保存されるので
元画像を取り込めてはいるようです。
IISを使っているのですが、そこに原因があるのでしょうか?
取り込んだ画像をwwwroot以下に保存して、imgタグの参照先に直接ファイルを
指定する方法はセキュリティーの問題で使用できません。
よろしくお願いします。
0084nobodyさん
2008/05/30(金) 18:14:23ID:???ただ画像を出力するならGD不要
header("....");
$file = "/home/hoge/image.jpg";
readfile($file);
headerを送信する前に何か送ってない?
008583
2008/05/30(金) 18:25:13ID:???アドバイスどうもです、試してみます。
上記したソースのみなので、header前は何も処理していないです。
0086nobodyさん
2008/05/30(金) 18:48:03ID:???処理とかじゃなくて<?phpの前に
改行とかあってもNGなんだけど、だいぢょうぶ?
てか、えらーを確認しる
008783
2008/05/30(金) 19:03:02ID:???もちろん<?phpの前には何も書いてません。
エラーも特に出ておらず、$flg = imagejpeg($img);の前にechoとかすると
エラーが出ることは確認してます。
0088nobodyさん
2008/05/30(金) 20:07:39ID:???display_errorsの設定は?
0089nobodyさん
2008/05/30(金) 21:49:55ID:???画像を表示させるにはどうすればいいのでしょうか?
相対アドレスでひとつひとつ指定していくしかないのでしょうか?
0090nobodyさん
2008/05/30(金) 21:58:28ID:jYsEwVCpありがとう、確かにその方法があった・・・
ATコマンドマニュアル書にも書いてある・・・
でも、もう遅い・・・
今日がリリースだった・・・
遅いよおおお、もっと早く・・・
0091nobodyさん
2008/05/30(金) 22:16:16ID:???0092nobodyさん
2008/05/30(金) 22:43:51ID:???0093nobodyさん
2008/05/30(金) 23:09:04ID:???0095nobodyさん
2008/05/31(土) 09:24:49ID:rg5NRkechttp://ml.php.gr.jp/pipermail/php-users/2004-January/020601.html
0096nobodyさん
2008/05/31(土) 10:25:15ID:???そういうことじゃなくて、
クラスをnewするときに限っての話だと思うよ。
$obj =& new Classname($param);
と
$obj = new Classname($param);
の違い。
使い分ける理由はあるのか?と。
0097nobodyさん
2008/05/31(土) 10:53:26ID:???0098nobodyさん
2008/05/31(土) 14:25:14ID:???0099nobodyさん
2008/05/31(土) 14:27:10ID:VvNY8ycBselect 名前(田中) select select select
select 名前(佐藤) select select select
select 名前(伊藤) select select select
という感じで、名前の部分以外はselectで選択するようになっている。
名前の部分は、選択する必要がなく、labelで書いているんだけど、この名前もselectのものと同じように
配列で取得したいんだ
でもlabelには、元々name属性もvalue属性もないからできない
いい方法ありますか?
0101nobodyさん
2008/05/31(土) 14:46:36ID:YpR0nkCv[PHP]:Ver 4.3.11
PEARのImage_Graphを使おうとしています。
$ pear install --alldeps Image_Graph-alpha
とすると「requires PHP extension "gd"」と出るので、
$ yum install php-gd
をしました。
再度pear install --alldeps Image_Graph-alphaを実行しても
同じエラーが出ます。
どのようにしてImage_Graphを使うようにするのでしょうか?
エラーの詳細です
------------------------------------------------
[root@hoge /]# pear install --alldeps Image_Graph-alpha
pear/Image_Canvas requires PHP extension "gd"
pear/Image_Graph requires package "pear/Image_Canvas" (version >= 0.3.0)
pear/Image_Color requires PHP extension "gd"
No valid packages found
install failed
------------------------------------------------
よろしくお願いします
0103101
2008/05/31(土) 15:36:36ID:YpR0nkCv返信ありがとうございます
[root@hoge ~]# rpm -ql php-gd
/etc/php.d/gd.ini
/usr/lib/php4/gd.so
次に/usr/lib/php.iniの中の
extension_dir = "./"
に従い、
$ cp -p /usr/lib/php4/gd.so /usr/lib/
(php.iniが/usr/libの中にあり、extension_dirが./になっているので
やってみました)
php.iniに
extension=gd.so
を追加。
apacheを再起動。
/usr/lib/の中には
libgd.a
libgd.so
libgd.so.2
libgd.so.2.0.0
があります。
しかし、同じメッセージが出てしまいます
0104nobodyさん
2008/05/31(土) 15:37:05ID:???0106ノシ
2008/05/31(土) 18:34:12ID:???#COM#ランダムコメント1,区切って2,ランダム3#/COM#
とあったら
#COM# から #/COM#
まで,で区切られた文字列を
ランダムに表示させたいです。わかるかたよろよろしくお願いします。
0108ノシ
2008/05/31(土) 20:09:24ID:fD/ntKdG正規表現を使うのも変換するのもわかるのですが
変換ルーチンに
つまり
\\1
で指定した文字を
どのように持ち込むかがわかりません
0109nobodyさん
2008/05/31(土) 20:29:34ID:???0110nobodyさん
2008/05/31(土) 20:52:03ID:???また開始ボタンを押しても一向に起動されないんですけどなぜでしょうか?
パソコン自体を一度再起動してもなりません。
0111nobodyさん
2008/05/31(土) 21:06:24ID:???0112nobodyさん
2008/06/01(日) 04:27:33ID:???0113nobodyさん
2008/06/01(日) 13:15:34ID:Ss8+miwE[OS] WindowsXP
[HTTPD] AN HTTPD 1.42p
[PHP] 5.2.6
[現象]
includeが使えたり使えなかったり。
include "hoge.php"; 以降の記載が無視される。
しかし、使える場合もある。
使える組み合わせ(呼び出す側と呼び出される側の組み合わせ)なら何回やっても使える。
使えない組み合わせだと何回やっても使えない。
そのため、どこの部分で引っかかっているのか判らない
エラーは吐かない。
ちなみに、以前php4(xampp環境)で使用していたときは、問題なく使えていた。
解決のための切り分けのヒントでもいいのでお願いします。
0115113
2008/06/01(日) 13:38:18ID:Ss8+miwEありがとうございます。
現在適応しているphp.iniは
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
です。
よろしくお願いいたします。
0116nobodyさん
2008/06/01(日) 14:01:08ID:???0119nobodyさん
2008/06/01(日) 23:10:35ID:???0120nobodyさん
2008/06/01(日) 23:46:09ID:???0121nobodyさん
2008/06/02(月) 09:47:17ID:???0122113
2008/06/02(月) 10:21:58ID:1QPDvcRnちょっとどちらのコードもかなり大きいのでここに貼り付けるのは不可能。
コード書くのがへたっぴなものでかなり膨大なサイズに・・
だから、切り分けの手段のヒントが欲しかったです。
でもここに貼り付けられるように、パターンが似たサンプルコードを書いていたら、結果として切り分け成功しました。
ありがとうございます。
>>119
>>120 の仰る通り。
include以降が無視される場合が使えない。
ただ、使える使えないって書き方はとても論理的ではなかったですね。
反省・・
>>120
フォローありがとうございます。
こんな論理的でない文章を理解していただけて助かります。
>>121
includeをコードのしょっぱなに持ってきていたので、最初の行ですでにそれ以降が無視されるという現象に・・
0123113
2008/06/02(月) 10:22:37ID:1QPDvcRnincludeされているファイルに問題がありました。
しかし、ここで疑問に思うのは、なぜエラーを吐かないのか
実は、includeされているファイルはさらに別のファイルをincludeするという二重include構造になっていました。
このさらにincludeされているファイルが悪いようです。(下記に示すところのファイルC)
ファイルA ← ファイルB ← ファイルC
( ← はincludeで読み込んでいる)
こいつは単体でアクセスしてもエラーを吐かず、ソースにも何も表示されません
そのため、どこに問題があるのか今の段階ではまだ絞れていません
このファイルCだけならここに張ることも可能なのですが、人様が作ったものでフリーで公開されていたものなので
ここに晒していいかどうかわからないので、とりあえず自分でもう少し絞っていこうと思います。
(このコードがphp5と相性が悪い線が強そうです。)
ご迷惑おかけしました。
皆様のアドバイスでここまでこぎつけたことは事実です。
ありがとう!!
0124nobodyさん
2008/06/02(月) 11:40:17ID:???0125nobodyさん
2008/06/02(月) 11:57:28ID:???php version5.1.6をyumコマンドでインストールしました。
0126113
2008/06/02(月) 12:01:29ID:1QPDvcRnそのファイルCは、RSSパーサーなんですよね。
で、いろんなRSSを突っ込んでみたんですけど、やはり結果は一緒で
でもPHP4だと正常に動くんです。
ちなみに仰られていたので、 exit と die を検索かけて見ましたが使用されていませんでした。
というか、これで思いついた、@マークをすべて消し去ればどこでエラーが出てるかわかるかも・・・
0127113
2008/06/02(月) 12:23:07ID:1QPDvcRn@mb_convert_encoding()
が原因でした。
問題は、PHPのバージョンではなく、私のphp.iniの設定だったようです。
このフリーのRSSパーサー(>>123 でいうところのファイルC)がコードの中に@mb_convert_encoding()でエンコードする
文字コードを別に設定しており、その設定が私のphp.iniと反する設定になっていました。
64 | $page = EUC_JP;
156 | $hoge = @mb_convert_encoding($hoge, $page, 'auto')
みたいな感じになっていました。
切り分けの際に、以前のphp.iniも適用して調べたと思ったのですが、抜けがあったみたいですね。
(再起動忘れたかな・・・)
スレ汚し、失礼いたしました。
ヒントを与えて下さった方々ありがとうございました!
0128nobodyさん
2008/06/02(月) 12:48:43ID:RzwMZ6BKSqlの order by key,value
のようなことをさせるにはPHPではどのようにすれば良いのでしょうか?
0129nobodyさん
2008/06/02(月) 13:10:12ID:???0130うっかりさん
2008/06/02(月) 13:20:46ID:???切腹します。
0132nobodyさん
2008/06/02(月) 14:46:49ID:???0134nobodyさん
2008/06/02(月) 18:52:31ID:SnLmoVqt初歩的な質問で申し訳ないのですが、『WT_HeaderNavi()』という関数を自分で設定し
↓のように記述して
------------------------------------------------------------
<?php
echo '<a href="' . WT_HeaderNavi(999) . '">TEST</a>';
?>
------------------------------------------------------------
実行すると↓のように<a></a>のタグの前に【関数で出力される値】が来てしまいます。
------------------------------------------------------------
【関数で出力される値】<a href="">TEST</a>
------------------------------------------------------------
↓のように順序通り出力するにはどうすればよいのでしょうか?
------------------------------------------------------------
<a href="【関数で出力される値】">TEST</a>
------------------------------------------------------------
色々ググったのですが、見つかりませんでしたのでご教授お願い致します。
0135nobodyさん
2008/06/02(月) 19:34:08ID:???WT_HeaderNavi(999)の中でechoやらprintやらしてねーか?
関数の最後で return 【関数で出力される値】; だな
0136nobodyさん
2008/06/02(月) 19:40:40ID:???その通りでした!!ぐっときました!!
ありがとうございました!!
0137nobodyさん
2008/06/02(月) 19:55:59ID:???■ このスレッドは過去ログ倉庫に格納されています