トップページ⇒php
986コメント361KB

【PHP】質問スレッドpart27【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/03/03 22:41:23ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。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辺り
0002nobodyさん05/03/03 22:44:18ID:???
前スレ
【PHP】質問スレッドpart26【php】
http://pc5.2ch.net/test/read.cgi/php/1103636095/l50

関連スレ
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/l50
【PHP】セッションについて語ろう!【PHP】
http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
PHPでPDF
http://pc5.2ch.net/test/read.cgi/php/983858078/l50
【PHP】Phrameを使う【フレームワーク】
http://pc5.2ch.net/test/read.cgi/php/1093238107/l50
PHP + PostgreSQL
http://pc5.2ch.net/test/read.cgi/php/983128806/l50
0003nobodyさん05/03/03 22:44:40ID:???
PHP系blogツール part2
http://pc5.2ch.net/test/read.cgi/php/1094725439/l50
PHPBB
http://pc5.2ch.net/test/read.cgi/php/1065334037/l50
Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/l50
★負荷軽減対策委員会(Perl、PHP)★
http://pc5.2ch.net/test/read.cgi/php/1034645635/l50
【PHP】Smarty【Template】
http://pc5.2ch.net/test/read.cgi/php/1047225437/l50
【PHP】処理能力向上テクニックスレ
http://pc5.2ch.net/test/read.cgi/php/1088823837/l50
【PHP】自作スクリプト発表会
http://pc5.2ch.net/test/read.cgi/php/1017456911/l50
親切な人が初心者にPHPの関数を使い方を教える
http://pc5.2ch.net/test/read.cgi/php/1068190843/l50
0004nobodyさん05/03/03 22:45:14ID:???
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 
1. ハードウェア、OSのバージョン等には一字一句触れない。 
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 
  目の前で生じている現象をそのまま具体的に書くなどもっての外。 
  事実より俺様の脳内解釈を優先すべし。 
4. 独り言文体で必勝。 
  「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 
  「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 
  "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 
  「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 
  示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 
 絶対に避ける。 
8. 情報は小出しに。 

「エスパーきぼんぬ」 補足 
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 
そのような悪い質問に対して答えられるのは, 
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, 
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。 
まちがっても「エスパーの方,回答お願いします」 
なんて痛い質問するな。つうか氏ね。
0005nobodyさん05/03/03 22:46:04ID:???
こんなもんかな?
補足ヨロ
0006nobodyさん05/03/04 01:00:13ID:3xlEv0k9
PHP5のクラスの話なんですが、
下記のように、プロパティでpublic宣言してないものを、コンストラクトしても、別に問題ないのでしょうか?
一応、エラーは出ないのですが、気持ち悪いような気がして。。。
// クラス
class Category{
  // プロパティ
  public $aCategory;
// コンストラクタ
    function __construct()
    {
        global $g_hDB;
        while(1){
            $sSQL = "select * from category where categoryname = '" . $_REQUEST['categoryname'] . "'";
            $result = pg_exec ($g_hDB, $sSQL);
            $pg_num_rows = pg_num_rows($result);
            if ($pg_num_rows >= 1){
                $this->aCategory = pg_fetch_array ($result, 0, PGSQL_ASSOC);
                break;
            }
            else{
                $_REQUEST['categoryname'] = "top";
            }
        }
        //★★★↓ここが気持ち悪い・・・★★★
        foreach ($this->aCategory as $key => $val){
            $this->{$key} = $val;
        }
        unset($this->aCategory);
        
    }
(後略)
0007nobodyさん05/03/04 01:27:42ID:???
>>6
おれとしては
>$_REQUEST['categoryname'] = "top";
ってスーパーグローバル変数に代入しちゃってるのがきもちわるい。
0008605/03/04 01:46:21ID:???
>>7
ギク、そのとおり、あとでなおすつもりです・・・orz
0009nobodyさん05/03/04 09:10:17ID:JryQONc+
ふと疑問に思ったのですが、ファイルに書き出すとき
桁数の制限ってあるんでしょうか?
変数に格納できる桁数の制限も知りたいです。
0010nobodyさん05/03/04 10:49:45ID:???
めもりのつづくかぎり
0011nobodyさん05/03/04 11:39:10ID:???
ハードディスク(外部記憶装置)の許す限り
00121105/03/04 11:40:07ID:???
あるいはquotaが許す限り
0013nobodyさん05/03/04 13:12:11ID:???
かみさんが許す限り
0014nobodyさん05/03/04 13:24:43ID:???
うちのかみさんがね、桁数の制限を気にするんですよ
0015nobodyさん05/03/04 13:49:05ID:???
おまいの給料じゃ気にもなるさ
0016nobodyさん05/03/04 13:56:36ID:???
>>9
よーしパパへそくりしちゃうぞー

$i=2;
while(1){
$i*=2;
echo$i,"\n";
if(is_infinite($i))break;
}
00171105/03/04 15:18:36ID:???
>>16
8.98846567431E+307
1.#INF
で終了しました(Win XP)
0018nobodyさん05/03/04 15:44:14ID:???
8.98846567431E+307
INF
で終了。@32bitなLinux
0019nobodyさん05/03/04 16:29:47ID:???
>>16
Fatal error: Call to undefined function: is_infinite()

自分には、かみさんがいませんから。
残念!
0020nobodyさん05/03/04 16:35:56ID:???
8.98846567431E+307
妊婦

で終了。予定日:3月12日
0021nobodyさん05/03/04 18:28:58ID:???
もっとまぶいコンピューター使ってる奴はいないのかよ。
0022nobodyさん05/03/06 03:31:13ID:pz614Rae
phpスクリプトで unzipを実行したいのですができません。
具体的には、ブラウザでサーバー内ファイルの圧縮・解凍操作を行いたいと思っています。
どうすればよいのでしょうか?

【実際のテスト結果】

phpファイルと解凍したいファイルは同じフォルダ内で以下のようにすると・・・

<?php
echo system("pwd\n");
echo system("unzip file.zip\n");
?>
-->(phpファイルの置かれた場所がちゃんと表示される)
-->127
(unzipコマンドの返り値が”127”のみでで解凍されている様子はない)

<?php
echo system("echo hello\n");
?>
-->hello
(正常)

<?php
echo system("rm file.zip\n");
-->0
(正常に削除される)

【環境】
FreeBSD 4.7
PHP4.3.9(apacheのモジュールとして動作)
Apache/1.3.33
0023nobodyさん05/03/06 04:30:41ID:???
apacheが動作しているユーザ/グループで、file.zipを操作できるかどうか
アクセス権限を確認しる。
0024nobodyさん05/03/06 04:37:48ID:???
>>22
system('unzip file.zip 2>&1')

みたいにして標準エラーの内容を見る、とかしてみたら?
あとはエラーが127だからunzipがちゃんとパスの通った場所にあるのか確認
00252205/03/06 05:19:00ID:pz614Rae
>>23
答えになってないかもしれませんが・・・

とあるレンタルサーバーのVPSプランを利用しているんですが、ユーザー名を username とすると

phpinfo()で見る限り、apacheのユーザーと _SERVER["USER"] は usernameになっています。
sshで usernameでログインした場合、 unzip , zip ともに可能です。
念のためですが、 >>22 の 【実際のテスト結果】 はブラウザからのアクセスでの結果です。

>>24

> system('unzip file.zip 2>&1')
を実行すると 1127が帰ってきました。
googleで検索してるんですが検索の仕方が悪いのか このエラーの意味がわかりません。

unzipのパスについては、sshでログインした場合にunzipは可能なのですが、それとはまた違うのでしょうか?
0026nobodyさん05/03/06 05:48:59ID:???
>>25
>unzipのパスについては、sshでログインした場合にunzipは可能なのですが、
>それとはまた違うのでしょうか?
違う。両方でwhoamiしてみ。
00272205/03/06 08:33:52ID:pz614Rae
>>23
>>24
>>26

感謝!解決しました!

実行権限、コマンドのパス、VPSであることあたりがからんでたようです。
(VPSがからんでるかは微妙ですが)

【結果報告】
whoamiも両方試すと ブラウザからはwhoamiができませんでした。
よく確認してみると、同じディレクトリでもブラウザからとSSHではpwdの出力が違うことに気づきました。
apacheで見えてない(ブラウザからのpwdでは見えてない)上位のディレクトリに whoamiとunzipの実行ファイル(?)があったのでそれをapacheで見えるディレクトリにコピーして、権限設定。
phpのsystemでそのコピーした実行ファイルのパスを指定したら、実行できました。

*表現がおかしいところがあると思いますが、そこはごめんなさい

皆様の助言のおかげで解決しました、ありがとうございました!
0028nobodyさん05/03/06 18:14:42ID:pWV0LcHN
Flash用に読み取るファイルは
name=AAA&from=BBB&age=CCC
というようになっているのですが
これをPHPで各値を取得するために

$yomi = mb_split("&", $text);
for($i=0;$i<5;$i++){
if(mb_ereg("name=", $yomi[$i])) $ad_name = mb_ereg_replace("name=", "", $yomi[$i]);
if(mb_ereg("from=", $yomi[$i])) $ad_from = mb_ereg_replace("from=", "", $yomi[$i]);
if(mb_ereg("age=", $yomi[$i])) $ad_age = mb_ereg_replace("age=", "", $yomi[$i]);
}
というようにしてます・・
がこれだとスマートじゃないですよね・・

皆様はどうやっていますか?m(_ _ )m
0029nobodyさん05/03/06 21:45:58ID:???
>>28
parse_str
0030nobodyさん05/03/06 23:18:40ID:???
くだらない質問させてください。
if(ereg("[^._0-9A-Za-z]+", $_FILES['userfile']['name'][0])) {
と記述されている部分があるのですが、
この場合、「ハイフン」も含めるにはどう書けばいいでしょうか?
0031nobodyさん05/03/06 23:25:13ID:???
すみません、スレ違いでした。
くだらない質問スレに行ってきます。
0032nobodyさん05/03/07 09:34:01ID:???
require 'hoge.inc' ;

としたときに hoge.inc が自分のいるパスを知ることができますか?
0033nobodyさん05/03/07 11:46:58ID:???
>>32
__FILE__。定数一覧は見ておけよ
00343205/03/07 15:08:02ID:???
>>33
希望通りの結果を得ることができました。

> 定数一覧は見ておけよ
見ときます。
0035nobadyさん05/03/07 15:33:31ID:???
質問です。

session_start();
と記述した後に
header("Content-type: application/octet-stream;");
を使用したいのですが思うように使用できません。
ダウンロードダイアログが表示されるのですが、
"開く"を選択してもファイルを開くことができません。

sessionとheaderは同時には使用できないのでしょうか?
よろしくお願いします。
0036nobodyさん05/03/07 15:55:21ID:???
保存はできるのか?
0037nobodyさん05/03/07 16:05:42ID:???
なんだかよく分かりませんが、小さなスクリプトなら問題無く動きましたよ?
session_start();
if($_SESSION[go] == 'ok'){
 header("Content-type: application/octet-stream");
 print "session value is ".$_SESSION[go];
}else{
 $_SESSION[go] = 'ok';
 print "<a href='$_SERVER[PHP_SELF]'>a</a>";
}
0038nobodyさん05/03/07 16:34:18ID:???
過去にhttps+session+IEでダウソ出来ないバグがあったなぁー。
0039nobadyさん05/03/07 16:38:54ID:???
>>36
保存は正常にすることができました。
保存したファイルを開くこともできました。

>>37
session_start()で取得した情報に基づきファイルをreadfile()で出力し、
それらを保存、及び開こうとしているのですが、
session_start()を使用した後にheader()を使用すると
保存ができて、開くことができません。

session()とheader()はなにか相性が悪いのでしょうか?
ご教授いただきたいです。
0040nobodyさん05/03/07 16:46:42ID:???
保存出来るってことはブラウザとかクライアントの環境依存の問題じゃん
PHP関係無い
0041nobodyさん05/03/07 16:56:01ID:???
>>39
保存できるならそれでいいんじゃないのか?何のためにヘッダ吐いてるんだか
0042nobodyさん05/03/07 17:39:59ID:???
>>35
マニュアルのheader()の項を読む。
session_start()時にどんなパケットが流れるか見てみる。
対策は確かマニュアルにあったと思うし、メーリングリストに回答がある。
0043nobodyさん05/03/07 23:17:18ID:PL7b7WJg
OSはMeでxamppをインストールしてPHP4に切り替え使用しています。
PHPエディターを使ってWebサイトでの使用を目的としたPHPの勉強をしようとしているのですが、
文字コードについてよく判りません。

エディタでEUCを指定するとブラウザがISOの欧州フォントなどに切り替わり日本語部分が文字化けし、
Shift_JISで保存すると今度は自動的にEUCに変わり文字化けします。
動作確認をIE6.0とFirefox1.0で行っているのですがどちらも同様の反応が出ます。

PHPの保存時の文字とPHPをhtml内で表示させる場合のmeta内での文字コードなどはどのような関係になっているのでしょうか?
どなたか御教授お願いします。
0044nobodyさん05/03/07 23:29:30ID:???
xamppのPHPは、SJISで書いたスクリプト処理には対応してないと思われ。
0045nobodyさん05/03/07 23:38:41ID:???
>>43
PHPで文字エンコーディングを意識する必要があるのは3個所あって、
1. HTTP入力 - POST,GET等
2. 内部文字エンコーディング - スクリプト自体の文字エンコーディング
3. HTTP出力 - 結果の出力時の文字エンコーディング
詳しい内容は、ttp://www.php.net/manual/ja/ref.mbstring.php

その他に、apacheが付加するcharsetも関係してくる。AddDefaultCharset等。
■ このスレッドは過去ログ倉庫に格納されています