【PHP】質問スレッドpart17【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/05/17 17:14ID:AT+bUkag・新規質問の方は上げてください。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
抜けているものがあったら補足願います
0024nobodyさん
04/05/18 21:30ID:???外部コマンドを非同期で呼ぶ方法を教えてください。
時間のかかる夜間バッチを、PHPの画面からボタンをクリックして
起動するようなイメージです。
当然バッチの戻りを待つ必要はありません。
環境
RedHat 9 / PHP 4.3.5 / apache 1.3.29
exec() 等で起動したいコマンドを指定すると、起動したコマンドが終わるまで
PHPが待ってしまいますが、どうやったら待たずに、即座にPHPに処理を戻せますか?
調べたところ、下記のようにコマンドの標準出力を /dev/null にリダイレクト
させるとうまくいきましたが、これしかないのでしょうか?
exec("batch.sh > /dev/null");
下記にも似たようなことが書いてありました。
http://ns1.php.gr.jp/php-jp/archives/msg07476.html
http://www.php.net/manual/ja/function.exec.php
exec("batch.sh &");
ではうまくいきませんでした。
0025nobodyさん
04/05/19 00:02ID:???FormからpostでUTF-8の日本語ファイルを選択(ここまでは正常)してsubmitすると$_FILEで取得した日本語ファイル名が空白(NUL)になってしまいます。
なんででしょーか? $_POSTを試してみます。
0026nobodyさん
04/05/19 01:42ID:???させているのですが、再読み込みをするとインラインフレームの中が全画面で表示されてしまいます。
インラインフレームの定義を保持したままでリロードする方法を教えてください。
0027nobodyさん
04/05/19 02:01ID:???ファイル名が空白?ちゃんとファイルがPOSTされてるのは確かなの?
>>26
Javascriptでインラインフレーム内のフォームにPOSTさせるとか
0028nobodyさん
04/05/19 02:28ID:???JavascriptからPHPへの受け渡して経験ないんですが、それにしてみます。
0029nobodyさん
04/05/19 09:30ID:???003025
04/05/19 13:02ID:???ファイル名の最初が日本語だと「日本語」がカットされます。
例 あいうえお.zip
ポストすると
.zip(2000Pro+IE6)
NUL(OSX10.3+IE5.2)
NUL(OSX10.3+サファリ)
あいうえお.zip(OSX10.3+モジラ)
あいうえお.zip(OSX9.2+IE5.1)
などなど
最初はOS9でPHP作ってたから気が付かなかった...
0031nobodyさん
04/05/19 14:01ID:???targetてフレーム名でも指定できるんですね。ありがと
0032nobodyさん
04/05/19 14:02ID:OfngxgLc0035nobodyさん
04/05/19 16:22ID:7KZLVZlc入れたパソコンは問題なくp2が動作したのですが
他のパソコンから見ようとするとネットワークパスワードを求められます。
ここが問題なのですが正しいパスワードを入れても認証に失敗します。
環境
windows2000pro / PHP 4.3.5 / IIS5.0
どうすれば他のパソコンから見れるようになるでしょうか?
0037nobodyさん
04/05/19 16:44ID:7KZLVZlcめくらってなんですか?
2ch語?
0040nobodyさん
04/05/19 16:53ID:7KZLVZlc以後気をつけます
0041nobodyさん
04/05/19 17:30ID:???http://www.google.co.jp/search?q=%E3%82%81%E3%81%8F%E3%82%89%E3%81%A8%E3%81%AF&ie=UTF-8&hl=ja
0042nobodyさん
04/05/19 17:34ID:???csv形式のテキストから一文字ずつ配列に取ってきているんですが、fgetcsvでエラーが出てしまいます.
print_r ($csv)とすると
2004,記念の,テスト
となり
print "$csv[0]$csv[1]$csv[5]$csv[6]"とすると
20,記
となります。
$data = fgetcsv($csv, 10000, ",");
にするとえらーがでてしまうのですが、どうやったら$dataに","を抜いた形で配列に入れることが
できるんでしょうか?よろしくお願いします。
0044nobodyさん
04/05/19 17:54ID:???0048nobodyさん
04/05/19 18:41ID:???$lines=count($data)
for($i=0; $i<$lines; $i++){
mb_ereg_replace(",","",$data[$i]);
}
0049nobodyさん
04/05/19 18:41ID:???$csvには何が入っているのさ?
質問内容を整理して、マニュアル読んで、ぐぐって、それでもわからんかったら書き込めよ
0050nobodyさん
04/05/19 18:43ID:???0051nobodyさん
04/05/19 19:32ID:???PHPはApacheのモジュールとして動かしてるのでこのマルチバイト文字列関数を
/usr/lib/pgsrl.so
などのようにコンパイルする事は出来ますか?
PHPをソースコンパイルしろってのはナシで。そうするとApacheのコンパイルもsslやらなんだかんだoption付けないといけんので手間が掛かりすぎるからです。
ぶっちゃけマルチバイト文字列関数が使えるRHL9のrpmさえあればいいんすが...
0052nobodyさん
04/05/19 23:14ID:???0053nobodyさん
04/05/19 23:41ID:???まぁLinux板にも質問してるんだけどw
http://www.teu.ac.jp/chiit/~yuhei/rpms.html
ここから手に入れてrpm -iしてんだけど、入れ替わってくれん...
0054nobodyさん
04/05/19 23:47ID:???# rpm -qi php-4.2.2-17.2.mbsupport.i386.rpm
パッケージ php-4.2.2-17.2.mbsupport.i386.rpm はインストールされていません
なんでだ??
0055nobodyさん
04/05/20 00:16ID:???PHPをソースから入れるにはApacheもソースから入れなきゃならんと思っているのに、偽造500ウォン
んで、モジュールのみコンパイルしてインストールすることも可能なはずですよ。
0056nobodyさん
04/05/20 09:17ID:???どうすればよいでしょうか?
たとえば「12000」という数字を「12,000」として表示したいです。
0058nobodyさん
04/05/20 10:19ID:???頼むから
0059遅くなって申し訳ない1
04/05/20 10:19ID:q5E1Ags3#亀レススマソ…
☆ P H P 5 ☆
http://pc5.2ch.net/test/read.cgi/php/1056969979/
#次スレのテンプレ作成時に指摘ヨロ>>980あたり
0060nobodyさん
04/05/20 10:21ID:???0062nobodyさん
04/05/20 10:52ID:WaBVWaFV0064nobodyさん
04/05/20 12:13ID:NShBOzWM�@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
�Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
�Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
…といいつつ、かく言う私も、PHPに乗り遅れまいと必死だが…。(^^;)
0065nobodyさん
04/05/20 12:23ID:???ぶっちゃけ55氏の指摘に追加で500ラデック
PHPのビルドは、はまると結構掛かるので
ttp://www.softagency.co.jp/mysql/LAMP/download.html#aka9
辺り使っといたら?MySQLサポート外すならSRPMからリビルドね。
0067nobodyさん
04/05/20 14:50ID:???素人ながらオブジェクト指向なコーディングをするように考えていますが、
なるべく単純で、良いお手本となるソースを公開してるところはありますか?
0068nobodyさん
04/05/20 15:00ID:???0069nobodyさん
04/05/20 15:01ID:???0070nobodyさん
04/05/20 15:13ID:???めくら:目が見えない人
文盲:字が読めない人
明盲(あきめくら):字は読めるが文章が理解できない人
0071nobodyさん
04/05/20 16:24ID:YWvMGF1q通常のメール送信はできるのですが
メール送信を行った後、別のページ(例:thanks.html)
へ飛ばしたいのですが、
if (mb_send_mail($To, $MailSubject, $MailMessage, "From:$From")) {
header("Location: thanks.html");
}
else {
echo "$cnf_NgMsg\n";
}
これだと下記のエラーがでます。
Warning: Cannot add header information - headers already sent by (output started at /home/***/***/***/index.php:6) in /home/***/***/***/mail/mail.php on line 140
form/index.php にフォームがあり、form/mail/mail.phpへ引数を渡して、
mail.phpでメールを送信している感じです。
このような場合locationを使うのは不適当なのでしょうか?
007271
04/05/20 16:26ID:YWvMGF1qメール自体は送信できるのですが、別ページに飛ばす事ができませんです。。。
007371
04/05/20 16:35ID:YWvMGF1qお邪魔しました。。
0076nobodyさん
04/05/20 18:55ID:???0079nobodyさん
04/05/20 20:02ID:???0080nobodyさん
04/05/20 21:18ID:???例えば"あひゃ"を反転させ、"ゃひあ"にしたいんですが
現時点では"痰ミあ"となってしまいます。
0081nobodyさん
04/05/20 21:23ID:???0083nobodyさん
04/05/20 22:22ID:???ここにある高速チャットを設置すると以下のようなエラーメッセージが出るんですが
どうすればうまく行きますか?
Warning: session_start(): open(/tmp\sess_7bede8e58cf70ade30189aa799a60b24, O_RDWR) failed: No such file or directory (2) in C:\home\chat.php on line 2
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\home\chat.php:2) in C:\home\chat.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\home\chat.php:2) in C:\home\chat.php on line 2
Warning: Unknown(): open(/tmp\sess_7bede8e58cf70ade30189aa799a60b24, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
0084nobodyさん
04/05/20 22:23ID:???Perlの時に動いていたSuexec機能はPHPでは効いていないようで、PHPから作成したファイル・ディレクトリが全てapacheのデフォルトの権限で作成されてしまいます。
なんとかPHPでもSuexec機能を使うことはできませんでしょうか?
環境は
FreeBSD 4.9
Apache 2.0.49+PHP4.3.6+MySQL4+Suexecです。
宜しくお願いします。
0085nobodyさん
04/05/20 22:34ID:???いわゆるオブジェクト指向的な
プログラミングの参考には
それほどならないだろう。
0088nobodyさん
04/05/20 23:36ID:???アプリの使い方は、アプリのところ(最も適した場所)で訊きなさい。
>>84
PHPをApacheのDSOとして組み込んじゃなくて、
CGI版のPHPをsuExecと組み合わせる。
今のバージョンのPHPはデフォルトでCLI版はビルドするけど
CGI版はオプションつけてやらないと生成しなくなってた気がする。
ところで"Suexec機能"って何?
その辺で認識違がある気がしないでもない。
0089nobodyさん
04/05/20 23:37ID:???アプリの使い方は、アプリのところ(最も適した場所)で訊きなさい。
>>84
PHPをApacheのDSOとして組み込んじゃなくて、
CGI版のPHPをsuExecと組み合わせる。
今のバージョンのPHPはデフォルトでCLI版はビルドするけど
CGI版はオプションつけてやらないと生成しなくなってた気がする。
ところで"Suexec機能"って何?
その辺で認識違がある気がしないでもない。
009089
04/05/20 23:37ID:???0091vv
04/05/21 02:16ID:???レンタル鯖使ってケータイ用サイト作ってます。
が、エンコード方法で困ってます。
やってること:
1 EUCで保存しているテキストファイルを読み込み
2 Shift-Jis変換してEchoで表示させる
ということをしたいのですが
mb_http_output('SJIS');
とかやってもうまくいきません。
なにか別の方法があるのでせうか?
0092nobodyさん
04/05/21 04:03ID:???echo mb_convert_encoding($str, "sjis", "euc");
とりあえずこれでやれ
それでなんでうまくいかないかは調べろ
てかマニュアル嫁
0094nobodyさん
04/05/21 13:35ID:9biQDb7uサイト閲覧者のブラウザー情報のうち、
表示領域の高さを取得することってできますでしょうか?
わかるかた、おながいします!
0096nobodyさん
04/05/21 13:45ID:???0097nobodyさん
04/05/21 13:50ID:???0098nobodyさん
04/05/21 13:55ID:9biQDb7u分かるのかな。などと、考えていたの私が愚かでした。
java縄で首括ってきます。
ブラウザーの検出方法
ttp://hotwired.goo.ne.jp/webmonkey/review/index82_page2.html
色深度の検出方法
ttp://hotwired.goo.ne.jp/webmonkey/2001/18/index0a.html
0099nobodyさん
04/05/21 14:02ID:???PHPで色深度検出ってなんじゃそりゃって思ったら、そういう環境変数を吐くブラウザの話じゃねーか
同じことしたいなら環境変数に「表示領域の高さ」吐くブラウザ作れ
でもってその場合もやっぱり板違い
0100nobodyさん
04/05/21 14:04ID:9YHKUH0F0101nobodyさん
04/05/21 14:12ID:???板違い
0102nobodyさん
04/05/21 14:36ID:fvdu+npM「$a = &$b;」と「$a =& $b;」は同じと考えても良いのでしょうか?
また、同じだとすると何故書き方が二通りあるの?
0104nobodyさん
04/05/21 15:16ID:???動作は同じだけど区別して書いている場合
$a = &$b; は"$bの参照"を渡す
$a =& $b; は"$b"の"参照渡し"
の意味合いを含ませているかも知れん。
0106102
04/05/21 15:55ID:???回答、ありがとうございます!では気にしないことにします。
書き方が二通りあるからには生成されるコードが違うのかも?
と気になって仕方がありませんでした。
これで心安らかにコーディングできます。
>>104
これは確かに微妙。だけど言いたいことは何となく…
0107nobodyさん
04/05/21 17:31ID:???0108nobodyさん
04/05/21 18:31ID:???PHPはCとは違うので、渡すのはあくまでも
リファレンスであってアドレスではない。
呼び名が違うということだけではなく、
仕組み上でもリファレンス≠アドレスだ。
0109nobodyさん
04/05/21 19:37ID:???disk-idにはCDを見分けるための番号
priceはそのCDの価格。
shopはいずれかのショップ名(A店,B店,C店,D店)
resultは順位
disk_id | shop_id | price | result
--------+---------+-------+--------
D151 | shopC | 1720 | 4
D151 | shopB | 1680 | 3
D151 | shopA | 1620 | 2
D151 | shopD | 1590 | 1
D152 | shopA | 2120 | 4
:
:
〜
〜
続く
0110nobodyさん
04/05/21 19:38ID:???$disk_id
array([0]=>D151[1]=>D151[2]=>D151[3]=>D151[4]=>D152)
$shop_id
array([0]=>shopC[1]=>shopB[2]=>shopA[3]=>shopD[4]=>shopA)
$result
array([0]=>4[1]=>3[2]=>2[3]=>1[4]=>4)
とこんな感じになっているのですが、これをphpでテーブルに表示する際
+------+------+------+------+------+
| D151 | shopA | shopB | shopC | shopD |
+------+------+------+------+------+
| 2 | 3 | 1 | 4 |
+------+------+------+------+
とshopAからDと順に表示するにはどうしたらいいでしょう?アドバイスよろしくお願いします。
0111nobodyさん
04/05/21 20:49ID:???+------+------+------+------+------+
| D151 | shopA | shopB | shopC | shopD |
+------+------+------+------+------+
| 2 | 3 | 4 | 1 |
+------+------+------+------+
こうだ、スンマソ
0112nobodyさん
04/05/21 21:15ID:???データベースからの取り出し方が悪いわな。
shop_id順に並べるならそのように取り出すべきでは?
SELECT * FROM table WHERE disk_id='D151' ORDER BY shop_id;
0113nobodyさん
04/05/21 21:28ID:???もしこれを一覧表示にするとなるとしてもSQL文でなんとかなりますでしょうか?
+------+------+------+------+------+
| D151 | shopA | shopB | shopC | shopD |
+------+------+------+------+------+
| 2 | 3 | 4 | 1 |
+------+------+------+------+
| D154 | shopA | shopB | shopC | shopD |
+------+------+------+------+------+
0115nobodyさん
04/05/21 22:17ID:???0116nobodyさん
04/05/21 22:19ID:???0117nobodyさん
04/05/21 22:25ID:???のですが、どういう風な記述をすればいいのでしょうか?
ereg_replaceを用いても、うまくできませんでした……。
0119nobodyさん
04/05/22 00:16ID:???0120nobodyさん
04/05/22 00:22ID:???いろいろ半端だねぇ
0122nobodyさん
04/05/22 09:16ID:FrQVvRLq3.3 クラスライブラリで汎用化のP137〜P143のサンプルプログラムを自環境で実行させたところ、(ソースの含まれるpdf:ttp://www.net-newbie.com/support/pdf2/PHP4_Part-2.pdf)
Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /home/hoge/public_html/lib/pgselect.inc on line 33
Warning: pg_num_fields(): supplied argument is not a valid PostgreSQL result resource in /home/hoge/public_html/lib/pgselect.inc on line 34
とエラーがでて動きません。
その前の章(3.2 PHPを使ってテーブル内容を表示する)のライブラリに分けないべたなスクリプトはちゃんと動作したのですが。
だいぶ見直してみましたが、エラーのでる原因が掴めません。
助言頂けませんでしょうか。
debianアンダーでapache2.0.49/PHP4.3.4の環境で動作させています。
よろしくお願いいたします。
0124nobodyさん
04/05/22 10:26ID:prWBgoDShttp://www.csmoon.com/prog/dcnt.html ここにあるサンプルCGIを設置したんだけど
なぜかinternal Server Error が出まくって全然動かない
環境はRed Hat Linux + Apache 2.0.48です
パーミッション、転送法などが原因かな?
だれか教えて!
■ このスレッドは過去ログ倉庫に格納されています