トップページ⇒php
1001コメント314KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/27 18:00ID:???
・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-4
0652nobodyさん04/09/08 18:41ID:???
>>651
$wap1の中身がbadsourceなんだろ
065364504/09/08 18:46ID:???
>>651
すいません、、、多分そうです。
エラー吐き出すソース書いてました。
これ全部直して、それでもうまく行かなかったらまた1時間ほど調べて、
それでも駄目ならまた戻ってきます、色々すいませんでした。
0654nobodyさん04/09/08 19:13ID:???
ini_set('display_errors','0');
でエラーを表示させないようにしたかったんですが
相変わらず普通にエラーが表示されてしまいます。
(ini_getで見ると一応変更されてるようなんですけど……)

php.iniのdisplay_errorsをoffにすればエラーは非表示になりました。
でもUPする先のはいじれないんで、どうしたら良いのでしょう。
windowsのapache2のローカル環境です。
0655nobodyさん04/09/08 19:32ID:???
マニュアルの27を読め
0656nobodyさん04/09/08 20:16ID:???
申し訳ない、何回か読んだはずなんですが、わからないのです。
0657nobodyさん04/09/08 20:19ID:???
嘘をつけw
釣りならよそでやれよカス
0658nobodyさん04/09/08 20:31ID:???
ここはひとつ、釣られやったと思ってヒントだけでも……
0659nobodyさん04/09/08 20:36ID:???
>>658
> ヒントだけでも……
(・∀・)ノ ttp://www.php.net/manual/ja/
0660nobodyさん04/09/08 21:30ID:???
そもそも>>655を見て、どこを見ればいいか判ったのか?
その上で、どうして>>656の回答になるのか良くわからん
0661nobodyさん04/09/08 21:42ID:???
ここです。
>XXVII. エラー処理およびログ記録関数
いや、本当に質問する前に何回か見たんですが。

php.iniのdisplay_errorsをoffにすれば、パースエラーとかでも
真っ白のページがでるじゃないですか? ああしたいんですよね……
もちろん、そんなエラーでないように作ってるんですけど、念のためってことで。
0662nobodyさん04/09/08 21:46ID:???
あ、パースエラーじゃないか。
0663nobodyさん04/09/08 22:11ID:???
>>661
開発中なら オンにしとけ
0664nobodyさん04/09/09 00:06ID:???
> いや、本当に質問する前に何回か見たんですが。

嘘をつくな
釣りはよそでやれ
0665nobodyさん04/09/09 00:14ID:???
もう池沼はほっとけ
0666nobodyさん04/09/09 00:25ID:FbdWBweA
ちょっとわからない質問です。

よくレンタルサーバーの仕様書に
/usr/local/bin/php
って明記している場合があるのですが
これはHTML内に記述して使えないと言うことですか?

普通HTML内に<?php 〜 ?>で使うことが多いですよね?
モジュールタイプとか言う意味がわからないのです。
0667nobodyさん04/09/09 00:30ID:???
>これはHTML内に記述して使えないと言うことですか?

No.

>普通HTML内に<?php 〜 ?>で使うことが多いですよね?

No.

>モジュールタイプとか言う意味がわからないのです。

調べれば?
0668nobodyさん04/09/09 00:32ID:???
>>666
CGIで動かしているだけでしょ。
Perlのように先頭に書いて以後は同じ

#!/usr/local/bin/php
<html><head>....
<?php
echo "なんたら";
...
?>
</body>
</html>
066966604/09/09 01:04ID:aXAHUhw0
サンクス。
0670nobodyさん04/09/09 01:16ID:???
>>664
(・∀・)ニヤニヤ
0671軟式PHP04/09/09 02:46ID:???
今日は久しぶりに仕事で徹夜でしゅ( ´−`)チュンチュン
0672nobodyさん04/09/09 06:49ID:???
FAQっぽいのですが
ヒアドキュメント内で定数を使う方法はないですか?
0673nobodyさん04/09/09 09:25ID:???
無い
散々外出だし
0674nobodyさん04/09/09 09:56ID:???
FAQ
Q.
Perl で便利だった定数や関数の埋め込み、q/qq はないの?
A.
残念ながらありません。要望を出しましょう。

0675nobodyさん04/09/09 10:59ID:IIwWnmVE
>>661
ApacheモジュールならApacheを再起動してないとか。
0676nobodyさん04/09/09 11:06ID:???
>>674 = >>406 = >>672
0677nobodyさん04/09/09 13:01ID:XV9g/9TM
フォームから受け取った文字列がhttp://から始まっているか
チェックするために
if(ereg("^http://", $_POST['url']))
と書いてみたのですが、これだと「test.http://〜〜」や
「test,http://〜〜」もスルーしてしまうみたいです。
どうやったらhttp://で始まっているかチェックできるのでしょうか?
0678nobodyさん04/09/09 13:13ID:???
>>677
うちの環境じゃ動くよ。ちゃんと確認したか?

<html>
<form>
URL : <input type="text" name="hoge" size="30"> <input type="submit" value="SEND">
</form>
</html>
<?php
$hoge = $_REQUEST[hoge];
if(ereg("^http://",$hoge)){
print "http://から始まる文字列です => \$hoge = $hoge";
}
?>
0679nobodyさん04/09/09 13:16ID:???
^
068067704/09/09 14:36ID:???
>>678
それをコピペしてみたら動いたので、どこか
他のところが悪かったっぽいです…
もう一度見直してみます。
ありがとうございました。
0681nobodyさん04/09/09 15:49ID:???
首から上が悪いんだろうなあ…
0682nobodyさん04/09/09 16:04ID:???
Perl で言うところの HTML::TableExtract のようなものは PHP にないでしょうか?
http://pear.php.net/package/HTML_Table は table の生成でした。
やりたいのは table を配列に変換したいのです。
0683nobodyさん04/09/09 16:22ID:???
自作してみて。
0684nobodyさん04/09/09 18:23ID:???
自作してもいいけど、会社の云々で公開できなくなるのが残念。
068567204/09/09 18:33ID:???
>673-674
外出すみません、ありがとうございました。

>676
perlは使ったことありません。
0686nobodyさん04/09/09 18:50ID:???
<?php
$link = mysql_connect("hostname", "user", "passwd")
or die("Could not connect\n");
print ("Connected successfully\n");
mysql_close($link);
?>

上のスクリプトで、hostnameがlocalhostのとき、
○シェルからCLI版のPHPで実行するとMySQLに接続できる。
○mod_phpからHTTP経由で実行してもちゃんと動く。

hostnameがlocalhostでない別ホストのとき、
○CLI版PHPではちゃんと動く。
×mod_phpではなぜか接続できない。

なんで別ホストで動くMySQLにmod_phpから接続できないんでしょう???

CLI版とmod_phpは同じコンパイルオプションで同時に作ったもの。バージョンは4.3.6。
./configure --with-mysql=/usr/local --with-apxs2=...
CLI版では接続できているのでネットワークや受け側MySQLの問題ではないと思う。
0687nobodyさん04/09/09 19:22ID:???
>>686
mysql_connectが吐くエラーメッセージはなんて言ってる?
0688nobodyさん04/09/09 19:29ID:???
>>686
実は、実行権限の違いの問題だったりして。
Apacheとコマンドラインの。

なにはともあれ 4.3.8にした方が良いと思います。
0689nobodyさん04/09/09 19:34ID:???
とりあえず、
die( "Could not connect. ".mysql_error() );
とでもやってエラー原因を確かめるべし
0690nobodyさん04/09/09 22:07ID:???
メールフォームを作ろうと思って、

<form action="<?php echo $PHP_SELF ?>" method="POST">
Name:<input type="text" name="name" size="16">
E-mail:<input type="text" name="mail" size="40">
<input type="submit" value="送信"></form>
<?php
if($_POST['mail'] and $_POST['name']){
mb_send_mail($_POST['mail'],$_POST['name'],本文だよ);
}
?>

という風に書いてみたところ
「Parse error: parse error, unexpected '{' in /~~~/mail.php on line 7」
と言われてしまいました。
変なところに{があるYO!ってことだと思うのですが、
どこを見ても余計な{は入っていないようにしか思えません。
どうすれば正常に動くのでしょうか…
0691nobodyさん04/09/09 22:10ID:+Va/ZOYc
phpの設置についてなのですが、
Vine Linux3 上のapacheでhoge.phpというファイルをアップし
ブラウザからアクセスすると、phpの中身がそのままテキストとして表示されてしまいます。
apacheのphp、php3、php4モジュールは読み込みされており
AddTypeもされています。

こういった場合どこか問題かわかる方よろしくお願いします。
0692nobodyさん04/09/09 22:16ID:???
mb_send_mail($_POST['mail'],$_POST['name'],本文だよ);
mb_send_mail($_POST['mail'],$_POST['name'],'本文だよ');
069369004/09/09 22:19ID:???
>>692
サンクスです!
0694nobodyさん04/09/09 22:47ID:???
>>691
--enable-versioningしてるの?それともcgiモジュールとapacheモジュールで分けてるの?
そのAddTypeは絶対間違ってない自信があるから、ここに書かないの?

>>693
Parse errorが出た時は show_source()を使うと
parserの気持ちになれてサクッと解決できることもあるよ。
0695カポコン04/09/10 00:02ID:???
>>686
AAA!CafeでのMySQL接続確認ならこの3行でOK
<?php
$link = mysql_connect("mysql?.aaacafe.ne.jp:3306","user","pass");
echo mysql_ping($link))?"MySQLと接続されています。":"MySQLと接続されていません。";
mysql_close($link);
?>
後は人に頼らず、自分でカスタ〜ムするべし。
後、MySQLでは正規表現探索が出来ますから、色々便利な部分も多いですよ。
0696nobodyさん04/09/10 00:20ID:GObesny2
プルダウンで選択されたものによって
そのページにあるテキストボックスの中に文字を変えたいのですが
どうすればいいのでしょうか?
あと、質問する場所がおかしいかもしれません。
申し訳ありません。
0697nobodyさん04/09/10 00:30ID:???
そういうのは普通クライアントサイドでやらないか?
0698nobodyさん04/09/10 00:41ID:GObesny2
自分のソースに記述するんですよね?
やっぱりここで聞く質問じゃないですか?
0699nobodyさん04/09/10 00:52ID:???
>>698
http://pc5.2ch.net/test/read.cgi/php/1065151808/
ここかな?
0700nobodyさん04/09/10 00:56ID:???
どうもありがとうございます
ご迷惑お掛けしてすみませんでした。
0701nobodyさん04/09/10 03:33ID:???
http://php.s3.to/man/ref.sockets.html
↑ここの例1をwindowsで動かしてみたんですが、
そのままだと接続した瞬間シャットダウンしてなにもできません…

試しにsocket_read のPHP_NORMAL_READをPHP_BINARY_READに変えてみたんですが、
そうすると今度は動くには動くんですが、一文字入力するたびにレスポンスがあって、
'quit'と入力することができません。

なにかまともに動かす対処法はないでしょうか
070270104/09/10 06:00ID:???
すいません自己解決できました。
0703nobodyさん04/09/10 10:11ID:???
正規表現が難しくて困ってます。
一つ作るのに3日くらい試行錯誤しながら
作ることもありまつ。
できあがったとしても、マッチはするものの
それで合っているのか不安です。
助けてください
0704nobodyさん04/09/10 10:17ID:???
>>703は110や119に電話しても「助けて」だけしか言わないタイプ
0705nobodyさん04/09/10 10:33ID:???
>>704
一本!
070670304/09/10 10:35ID:???
(´;ω;`)
0707nobodyさん04/09/10 10:37ID:???
>>703
正規表現はパズル感覚で楽しめるようにならないとな。
0708nobodyさん04/09/10 10:55ID:???
>>706
泣くな。正規表現は、おっもしろいぞー。 
0709nobodyさん04/09/10 11:52ID:e5AaNUbi
正規表現…オライリーでそれだけで1冊本ができるぐらいだからな。
一朝一夕にマスターできると思うな。
0710軟式PHP04/09/10 12:58ID:???
つかわんと覚えんよ。
071170304/09/10 13:22ID:???
自分の書いたので合っているかどうか
よく不安になるので・・・
正規表現が楽しめるようになるよう
がんばりまつ(`・ω・´)
レスありがとう。
0712nobodyさん04/09/10 13:42ID:???
>>703
とりあえずこんなスレも有るぞ

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
http://pc5.2ch.net/test/read.cgi/php/1069245758/
0713nobodyさん04/09/10 14:58:11ID:???
>>711
不安ならとりあえずここに書いたもん晒せよ
071468604/09/10 18:22:40ID:???
686のコードを
mysql_connect(...) or die(mysql_errno().":".mysql_error());
としてためしてみると、
2003:Can't connect to MySQL server on 'hostname' (0)
となりますです。
tcpdumpしてみると正常に接続できるときとは異なるパケットが飛んできてるようだけど、
だからといってどこを直せばわからん。

よくわからんので、MySQLのクライアントライブラリから
コンパイルしなおすことにするです。うーむ。
0715nobodyさん04/09/10 18:32:16ID:???
>>703
Regexp Tester
http://www.bitesizeinc.net/index.php/regexp.html
0716nobodyさん04/09/10 19:39:21ID:???
goo blogの管理ページ、
ブラウザの戻るしてもちゃんと表示されてるんだけどどうやってるんだ?
0717nobodyさん04/09/10 19:41:32ID:???
>>716
いくらでも方法はあると思うけど。俺はセッション使う
0718nobodyさん04/09/10 19:54:27ID:???
いや、セッションは解るんだけども、どうやってんだろう、と。
戻ったら期限切れで表示されないよね。
0719nobodyさん04/09/10 20:21:35ID:???
>>718
そりゃポストのときだろ
0720軟式PHP04/09/10 23:39:59ID:???
sessionリミッターでどうにでもなるけど。
0721nobodyさん04/09/11 08:14:04ID:???
HTTPヘッダを出力しないようにするにはどうしたらいい?
header()じゃだめだし、ini_set()でもそれらしいオプションが見つからん。

やりたいことはCGI版をコマンドラインで実行させたときに余計なHTTPヘッダを出力しないってだけなんだけど。
-qオプションを使いたいところなんだが、
#!/usr/env/php -q
としたら
/usr/bin/env: php -q: No such file or directory
と出て怒られた。
0722nobodyさん04/09/11 09:09:35ID:???
>>721
CGI版の PHP がどこにインストールされているのか知らないけど。
env を使わずに
#!/usr/bin/php -q
とか
#!/usr/local/bin/php -q
にしてみれば?
0723nobodyさん04/09/11 12:10:38ID:???
>>721
コマンドライン版使えばいいのに。
0724nobodyさん04/09/11 12:18:59ID:???
>>716
オイラはgoo blogは使ってないから想像で書くけど、
POST後にブラウザの戻るを使われて困る場合は、
POST処理後にheader("Location: 〜".SID) を使ってGET扱いにさせる。
0725nobodyさん04/09/11 13:15:27ID:1u0p7mhs
Vine+PHP4+MySQLの環境でphpMyAdminを使用しようと思って
phpMyAdmin-2.6.0-rc2.tar.bz2を解凍して
phpMyAdminと名前を変えてhttp://localhost/phpMyAdmin/
でアクセスすると
扱えない拡張子のファイルです,
PHP の設定をチェックしてください。
というメッセージがでて使用できません。どうすればよい
でしょうか?
0726nobodyさん04/09/11 14:07:53ID:???
>>725
>どうすればよいでしょうか?
↓
「PHP の設定をチェックしてください。」
0727sasa04/09/11 14:34:22ID:1u0p7mhs
>>726
php.iniを調べてもそれらしき場所が見当たりません。
httpd.confも.php登録してますし・・・
なんで扱えない拡張子なんだろ・・・
0728sasa04/09/11 15:06:32ID:1u0p7mhs
バージョン下げたら普通に動きました。
0729nobodyさん04/09/11 15:35:49ID:???
バージョンが上がるには理由があるわけで、
それを下げるのは解決法としてはあんまり良くないな。
>>725のエラーメッセージらしきものをググってみても全然ヒットしないんだけど、
何か隠してることは無い?
0730nobodyさん04/09/11 15:52:16ID:yl69/FM+
異常なまでにリロードされ、カウンタファイルがたまに壊れて困っています。
日付、昨日のカウント数、今日のカウント数、総カウント数
という形式で保存、総カウント数を出力しています。

保存はflock→fputs→fcloseです。
病的リロードに耐えうるカウンタは、どう作ればよいのでしょうか。
コツなどありましたら教えてください。
0731nobodyさん04/09/11 16:05:03ID:???
どうコーディングしてもサーバにリソース制約を
課されていれば壊れるときは壊れる。
flockで保護できるのは同時書き込みだけ。
0732nobodyさん04/09/11 16:06:47ID:???
>>730
そんなにリロードされるなら、IPで2重カウント禁止にすればいいじゃん
073373004/09/11 16:13:43ID:yl69/FM+
レスありがとうございます。
壊れるのはどうしようもないということですので、
2重カウント禁止に修正したいと思います。
731さん、732さんありがとうございました。
0734nobodyさん04/09/11 16:15:07ID:???
>>722
/usr/bin/phpでも/usr/local/bin/phpでもどちらでも動かせるようにしたいんで。

>>723
もちろんそうなんだけど、どちらがインストールされてても動くようにしたいので。

だって、「HTTPヘッダを出力しない」ってだけだから、それくらいの機能あるだろうと思うのだが。
それくらいの機能さえ見つけられないおれがへたれなんだがな。
0735nobodyさん04/09/11 16:45:45ID:???
>>734
HTTPヘッダの出力抑制は-qオプションであってるよ。
まあ一部抑制しきれてない(エラーかなにかだったかと)部分はあったと思うけど。

エラーでてるのはオプションの与え方とか、実際にファイルがなくて出てるんじゃないの?
0736nobodyさん04/09/11 16:52:30ID:???
たいていの OS は #! で複数の引数を認めないはず。
そんな制限のないものもあったような気もするが。

>/usr/bin/phpでも/usr/local/bin/phpでもどちらでも動かせるようにしたいんで。

特に ruby の人はこの傾向が強いけど、個人的にはやっちゃいかんと思う。
↓こうすればできるようだけど、オススメはしない。

#!/bin/sh
sed 1,3d "$0" | php -q -- "$@"
exit
<?php
phpinfo();
?>
0737nobodyさん04/09/11 16:59:08ID:???
バッファに咥えて破棄することはできんの。
0738nobodyさん04/09/11 17:20:54ID:???
strtolower('ABCabcアイウ');

abcabcヂツテ

これって仕様ですか?
0739nobodyさん04/09/11 17:39:36ID:???
mb_
0740nobodyさん04/09/11 17:39:49ID:iOhe01Jz
>>738
仕様です。
と答えれば満足するのか?
0741nobodyさん04/09/11 17:41:32ID:2sNlQMEV
>>738
strtolowerはマルチバイトには対応してないよ。
mb_strtolower使いな。
074273804/09/11 17:42:10ID:???
ごめんなさい
文字コード指定してあげたら
ちゃんと動きました
0743nobodyさん04/09/11 17:43:38ID:???
>>738
仕様というか、ある意味海外製ソフトウェアの宿命。
2バイト文字がShift_JISコードの場合の文字コードは、
A → 41
B → 42
C → 43
ア → 83 41
イ → 83 43
ウ → 83 45
で、内部にAとかを内包してるから。
最初から2バイト文字を配慮して作られてるソフト以外ではそのまま変換してしまう。
PHPもしかり。
試してないけどttp://jp.php.net/manual/ja/function.mb-strtolower.phpはどう?
mbstringモジュールが有効でPHP4.3.0以降ならの話みたいだけど。
074473804/09/11 17:46:06ID:???
>>739
>>741
オラクルのlowerと同じ仕様の関数を探してました
ありがとうございます!
4.3からmb_strtolowerがあったんですね。
0745nobodyさん04/09/11 18:27:55ID:jQgqezNj
imageCreateFromGif( )を使ってGIFを読み込み作成しようとしたのですが
使用しているサーバのGDがGIFに対応していないので困っています。
PHPを使ってGDを使わずGIFを読み込み作成は出来るのでしょうか?
みなさんはPHPでGIFを扱うときどうしているのでしょうか?ご教授ください
0746nobodyさん04/09/11 18:33:22ID:???
>>745
GIFの特許はもう切れたのだから、GIF対応したGDを入れるように
サーバ管理者に頼んだ方が早くね。
0747nobodyさん04/09/11 18:38:14ID:???
>>746
GIFの読み込みだけはGIFの特許問題と関係なく結構前のバージョンから対応している
まあいずれにしても、入れ替えるに同意
古いバージョン使っててもろくなことないし
0748nobodyさん04/09/11 18:39:50ID:jQgqezNj
>746-747
ありがとうございます。
さっそく、管理者にメールで要望してみます。
非常に助かりました
0749nobodyさん04/09/11 18:55:13ID:onw6fTqi
ファイルAからファイルBに処理を委譲したいのですが、
どのようにすればできますか?
header の location で遷移はできましたが、
hidden とかのパラメーターが渡らないんで困ってます。
? やセッションを使って渡してもいいかと思いますが、
他の方法があったら教えてくださ〜い。
今は、ファイルBをファイルAにインクルードして対処してます。
0750nobodyさん04/09/11 19:25:53ID:???
>>749
オブジェクト化しれよ
0751nobodyさん04/09/11 20:30:46ID:jF+qSLdI
こちらでよいかわかりませんが質問です。
PHP+apache+MySQLで組んだWEBアルバム(写真)があるのですが、携帯メールに
添付されている写真データを自動的にデータベースに登録する方法がピンときません。
できる方法ありましたら、大まかなイメージで結構ですのでアドバイスください。

現在、Postfixを入れ、画像付のメールが~/MailDir/newディレクトリに保存されて
いるところまで確認できてます。

■ このスレッドは過去ログ倉庫に格納されています