【PHP】質問スレッド Part5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/11 14:15ID:FWA0CpdU■本家
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あたりにきっと誰かが……。
0669nobodyさん
02/11/01 15:22ID:sjfqb6HL$now = getdate();
$today = mktime(0,0,0,$now['mon'],$now['mday'],$now['year']);
$start = $today - 86400 * $now['wday'];
$end = $start + 86400 * 7 - 1;
echo date("Y/m/d",$start) ." - ". date("Y/m/d",$end);
0670nobodyさん
02/11/01 15:53ID:t42zlzPT例えばこんなURL↓
http://messages.yahoo.co.jp/bbs?action=topics&board=2000247&sid=2000247&type=r
なんでだろ・・? やっぱ規制かけてるのかな・・?
どなたか、外部から上記ページの取得ができた人いませんか?
0673nobodyさん
02/11/01 17:14ID:???インデントがタブなので書きこむと無くなるため見にくいと思いますが、、
後学のためにもならないと思います(;´Д`)
//today
$today = getdate();
//月の最大日
$maxday_array = array(0,31,28,31,30,31,30,31,31,30,31,30,31);
//うるう年チェック
if( !( $today['year'] % 4 || $today['year'] % 100 ) )
{
$maxday_array[2] = 29;
}
0674続き
02/11/01 17:15ID:???$d_sabun = $today['mday'] - $today['wday'];
if( $d_sabun < 1 )
{
$m_sabun = $today['mon'] - 1;
if( $m_sabun < 1 )
{
$st_m = 12;
}else{
$st_m = $m_sabun;
}
$st_d = $maxday_array[$st_m] + $d_sabun;
}else{
$st_m = $today['mon'];
$st_d = $d_sabun;
}
0675さらに続き
02/11/01 17:15ID:???$d_sabun = $today['mday'] + ( 6 - $today['wday'] );
if( $d_sabun > $maxday_array[$today['mon']] )
{
$m_sabun = $today['mon'] + 1;
if( $m_sabun > 12 )
{
$ed_m = 1;
}else{
$ed_m = $m_sabun;
}
$ed_d = $d_sabun - $maxday_array[$ed_m];
}else{
$ed_m = $today['mon'];
$ed_d = $d_sabun;
}
$ed_str = sprintf( "%02d/%02d〜%02d/%02d", $st_m, $st_d, $ed_m, $ed_d );
0676あぼーん
NGNG0677nobodyさん
02/11/01 20:16ID:???>309
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д` ) < 通報しますた!
/, / \_______
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \ ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /~\ \ ( ´Д` ) < 通報しますた!
/ / > ) (ぃ9 ) \_______
/ ノ / / / ∧つ
/ / . / ./ / \ (゚д゚) ツーホーシマスタ!
/ ./ ( ヽ、 / /⌒> ) ゚( )−
( _) \__つ (_) \_つ / > (・∀・)ツーホー!
0678497
02/11/02 00:05ID:F92LVFOLその場合、
./configure の --with-pgsql はどうやって指定すればいいんでしょうか?
本やマニュアルは同一サーバに入れることを前提に書かれているので
調べたんですがわかりませんでした。
やろうとしているのはWeb(Apache+PHP)をグローバルで、
DBを裏側(プライベート)に置こうとしてるだけなので、
特別変わったことをしているわけではないと思うのですが。。
0679nobodyさん
02/11/02 00:06ID:F92LVFOL0680nobodyさん
02/11/02 00:35ID:xj1s/Rjkスクリプトが急にエラーになったんだけど、さっぱり
原因がわからない。
問い合わせてみたが返事はまだ。。。
なんなんだろ?
0682nobodyさん
02/11/02 11:03ID:???PHPをコンパイルする時だけ、PostgreSQLをインストールしておくと良い。
PostgreSQLのlibとincludeが必要だから。
>>680
register_globalsとかshot_open_tagあたりが原因っぽい気がする。
0683nobodyさん
02/11/02 11:17ID:VDOgYkQjちょと遅レス気味ながら。
漏れもそれで悩んでる。つか、環境によって違うのね。ローカルのテストサーバ(PHP4.2.2)では
ちゃんと+が残ってるのに、ホスティングサーバ(PHP4.2.3)上では+が消えて空白になる。
rawurlencodeを使っているので、渡している文字列は"hoge%20%2B%20hage"みたいに
なっていることを確認済み。受け取った直後に$_GETを見ると"hoge hage"になってるという
具合。
PHPの設定なのか?とも思うけど、それらしいものが見当たらないように思う。ちなみに、
magic_quote_gpcはどちらの環境でもOn。
PHPのバージョン違いによるものか、それともApacheの設定ということもありうるかもと
思ってるんだけど・・・誰かわかる人いない?
0685678
02/11/02 11:42ID:F92LVFOLありがとうございます。やってみました。
RPMで、potgresql-develを入れたら/usr/include/以下に
「libpq-fe.h」が入りますね。
あとは --with-pgsql オプションでエラーが消えました。
0686nobodyさん
02/11/02 17:19ID:3DCZqrMjmb_send_mailで添付ファイルつけて送らせたいと質問したものですが。
マニュアルを読んで最後の引数になにかヘッダを渡せばいいのかと思い
ましたが何を渡せばいいのかわかりません。
なにかヒントでも結構ですので教えてくださいませ、困り果ててしまいました。
0689nobodyさん
02/11/02 20:52ID:???0690684
02/11/03 12:50ID:8T4O8uvOこれ頭の4バイトが欠けるって話だよね?phpMyAdminが動かないのもこれが原因で、
formタグにenctype="multipart/form-data"をつければとりあえず回避できるという。
これと、漏れの言ってる「%2Bが空白に化ける」という話とはまったく別だと思うのだが・・・
でもとりあえず4.2.3国際版を入れてみるよ。直らなかったら笑いに来るね。
0691nobodyさん
02/11/04 05:17ID:???確か使えない。
{ } で括ってもダメだったよな。
0694nobodyさん
02/11/06 17:35ID:???0695nobodyさん
02/11/07 20:05ID:ETizMt8f$fp = @fopen( "honya.txt", "r" );
while( $record[] = fgets( $fp ) );
fclose( $fp );
for( $i = 0; $i < count( $record ) - 1; $i++ )
$item[] = split( " ", $record[$i], 11 );
echo "honya".$item[0][0]."hoge";
//echo "honya$item[0][0]hoge";
このプログラムだと出力が($item[0][0]=="xxxxx"だとして)
honyaxxxxxhoge
と表示されますが、コメントアウトしている方だと
honyaArray[0]hoge
と表示されます。更にNoticeもでます。(Noticeは設定ででないようにしましたが、、、)
なぜでしょうか?
宜しくお願いします。
0696nobodyさん
02/11/07 21:03ID:???0698nobodyさん
02/11/07 21:34ID:???それともこうやる派? ${xxx}
俺は ${xxx} こうやる派
0699( _。。)_ バタ。 ◆eJlUd9keO2
02/11/07 22:24ID:???クライアント用の socket を 非ブロックモードに設定するには
現状、 fsockopen系の関数を用いて socket_set_blocking関数を使うしかないのでしょうか。
いや、それでも構わないんですけど
socket_createで作ったリソースから非ブロックに切り替える方法はあるのでしょうか?
fgets / fputs を使うのが気持ち悪くて…。
でも socket_set_timeout は fsockopen系ですし… 素直に fsockopen系を使った方がいいのでしょうか。
0700( _。。)_ バタ。 ◆eJlUd9keO2
02/11/08 06:24ID:???何もメッセージが1つも着てない状態だと feof で 止まる……寝よう。
0701695
02/11/08 09:36ID:???${$a[1]}と${$a}[1]の差と同じ事ですね。
Cからきたので、混乱しておりました。
0702(ふ)
02/11/08 14:39ID:???なんだかお困りのようなのですが、僕の環境(php 4.2.2)では
<?php
$fp = fsockopen("www.php.net", 80);
socket_set_blocking($fp, false);
if (feof($fp)) {
print "eof\n";
} else {
print "non-eof\n";
}
fclose($fp);
?>
で普通にnonblockingな動作をしてくれています。なお、お気持ちは分かりますが
socketモジュールをお使いになるのはまだお勧めできません(ころころ仕様が変わるので)。
ちなみに4.3.0からstream_set_blocking()が正解になります。
てわけで環境を教えていただけますか?そしたらもうちょっとお役にたてるかもです。
0703nobodyさん
02/11/08 20:23ID:Vk0CjsjZ遅レスだが外部から読めますよ
自分でスクリプト書いたわけでなく、exciteの翻訳通しただけだけど。
ttp://www.excite.co.jp/world/url/body/?wb_url=http%3A%2F%2Fmessages.yahoo.co.jp%2Fbbs%3Faction%3Dtopics%26board%3D2000247%26sid%3D2000247%26type%3Dr&submit=%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=JAEN&wb_dis=3&wb_co=excitejapan
ってな風に飛べましたので。
URLの文字列のエンコード/デコードあたりになにかあるんじゃないかと。
0704nobodyさん
02/11/08 20:38ID:Vk0CjsjZttp://x68000.startshop.co.jp/~68user/Cgi-room/source.cgi?mode=body&output=text&url=http%3A%2F%2Fmessages.yahoo.co.jp%2Fbbs%3Faction%3Dtopics%26board%3D2000247%26sid%3D2000247%26type%3Dr
0705nobodyさん
02/11/09 18:55ID:QiNeNmkLグラフを出力するファイルの内容を変更しても
画像が変更されません
例えば付属のサンプルでグラフの数値をいじってみても
はじめに表示した値から変わらないのです
別のファイル名にかえてアクセスすると更新された画像になるんですけど・・・
どなたが原因をご存じないでしょうか?
0706nobodyさん
02/11/09 20:04ID:E2/H+5gTecho "氏んでね?";
?>
0707nobodyさん
02/11/09 20:41ID:???IEのキャッシュとか関係なくて
jpgraph.phpのUSE_CACHEをfalseにすればいいんですね
すみませんでした
0708nobodyさん
02/11/09 22:50ID:???0709nobodyさん
02/11/10 05:02ID:bTPzGvyqsubmitした後に、特定の文字に「\」が付いてしまいます。
例えば
「ソース」という語を送信した時に
「ソー\ス」という具合になってしまいます。
どうしてでしょうか。同じ経験をされた方は意見を聞かせてくれないでしょうか。
特に「\」だけをstr_replaceで取り除くことはできなさそうなので困っています。
もしレンタルなのでサーバーに問題があるのならどうしようもないのですが...
0710709
02/11/10 05:06ID:bTPzGvyq「ソース」という語を送信した時に
「ソー\ス」という具合になってしまいます。
というのは、「ソース」という語を
テキストに書き込む時や、
テキストから読み込んで、printする時のことを指しています。
0711nobodyさん
02/11/10 05:18ID:???相変わらずこのネタもいつまでもあるな。
magic_quotes_gpc をOffにするか、
stripslashesをつかう。
0713nobodyさん
02/11/10 05:59ID:???if(get_magic_quotes_gpc ()){ $xxx = stripslashes($xxx); }
こんな感じにしておけば汎用的。
0714709
02/11/10 07:31ID:bTPzGvyq少し説明不足だったかもしれませんが、
$mes = htmlspecialchars($mes);
if(get_magic_quotes_gpc())
{
$mes = stripslashes($mes);
};
一応このように書いていたんですが、「\」が表示されてしまいました。
710さんの言うように一度EUCで書いてみることにします。
0715709
02/11/10 07:47ID:bTPzGvyqまず文字コードをEUCで書いたところ、問題なく値を渡すことが出来ました。
それで、もう一度コードを見直していたのですが、どうやら思い違いで...。
たしかにサーバー側ではget_magic_quotes_gpc()がオンになっていたようなので
これによってstripslashしていたのですが、書き込むという作業だけにしか適応していなかったです...
ファイルから読み出すときも必要なんですね...(泣)
とりあえず解決できました。どうもありがとうございます。
そもそもどうしてmagic_quotes_gpcがオンになってることがデフォルトなのかわからないのですが...
0716nobodyさん
02/11/10 08:17ID:5LLCZez+海外のphpの掲示板に書き込もうとしているんですけど、画像をアップロードする機能が
ついてるんでやってみると
「アップロードされたファイルは有効なGIFかJPGファイルではありません。
それがそうであることを確認して、再び試みてください」
といわれてアップできないんですよね。gifで保存してもjpgで保存しても。
ファイル名はもちろん半角英語だし、cドライブの直下においてアップしたりもしてるのに、、、
これってどういう問題がかんがえられますか?
ファイル保存の時の問題?(jpgはjpgでもアメリカの形式は違うとか)
よくわからないんでよろしくお願いします。
0717nobodyさん
02/11/10 13:37ID:???0718nobodyさん
02/11/10 15:53ID:???0719nobodyさん
02/11/10 18:41ID:bTPzGvyq0720716
02/11/10 20:48ID:???0721nobodyさん
02/11/10 20:57ID:tAywYbvjXHTMLで下記のように宣言したいのですが、
<?の部分をPHPとして解釈してしまうためか、エラーになってしまいます。
宣言を維持したままエラー回避する方法はありますでしょうか?
<?xml version="1.0" encoding="euc-jp" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?xml-stylesheet href="x.css" type="text/css"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
0723nobodyさん
02/11/10 21:18ID:toIJMePB寝たでしょうか?
php.iniの設定を見直してみてください。
それか.htaccess内にて(以下略)
0724の
02/11/10 22:00ID:mHx5v26Nでいいのでは。
変に設定で逃げると後ではまったりするし。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
<?php ... にしないとなぁ、と思う今日のこの頃。
でも、<?=...も使えなくなるのは辛い。
0726721
02/11/11 01:22ID:???うっ、何か基本的なことを見落としていたのでしょうか…。
php.iniはいじれません、レン鯖なんで。
.htaccessで設定を変えられるんですか。勉強してみます。
>>721>>724
文字列出力してみます。
みなさんありがとうございました。
0727717
02/11/11 05:55ID:???0728723
02/11/11 20:37ID:Zxaf1apZ0729aiai
02/11/12 13:11ID:4eKOLLvz人生の答えが見つかったも同然である
http://www.tyousa.com
0730nobodyさん
02/11/12 22:19ID:???$fp=fopen("php://stdin", "r");
while(!feof($fp)){$buffer.=fread($fp, 4096);}
fclose($fp);
とかで直接吸い出そうとしたがphp://stdinが空っぽに見えるのだが。
もしかして$_POSTからじゃないと受け取れないの?鬱だ。
フォーム以外からもpostはあるだろうにのお。
0732nobodyさん
02/11/13 08:48ID:???STDINはすでにPHPが読み込んでるので空っぽです
$HTTP_RAW_POST_DATA
は使えませんか。
使えないときは、php.iniがいじれたら
always_populate_raw_post_data = Onに
0733問質
02/11/13 21:09ID:ldABWSGYif(!$foo) の「!」とかですでに躓いているのですが、
逝ってきたほうがよろしいですか?
0736質問です
02/11/13 23:12ID:???パーミッションが777のディレクトリの移動したいのですが
移動されたファイルのパーミッションが600になってしまいます
PHPでどうやって変更したらよいでしょうか?
systemコマンド以外で方法ありませんか?
0737nobodyさん
02/11/14 00:17ID:l0/zicwoforeach(@array){
($a,$b,$c)=split(/<>/);
}
といった
コードは
phpでは
foreach(@array as $value){
list($a,$b,$c)=preg_split("/<>/",$value);
}
でいいのでしょうか?
なんか違うような気がするんですが・・。
0739nobodyさん
02/11/14 08:26ID:wyuVakNT正規表現使わないんだったらexplodeの方が早い
0740nobodyさん
02/11/14 09:18ID:vniA+Llkfopen("file","a")
ってデータ飛ばないって本当なんですかね?
0741nobodyさん
02/11/14 09:44ID:/H/milPrASPのapplicationみたいなやつ。なんかサポートされていない
みたいなんだけどいい知恵ない?
やっぱファイルに書き込むしかない(w
0742nobodyさん
02/11/14 16:57ID:???レンタサーバのsafe mode on な関係で、CGI版PHPをUPしようとしていますが、
CGI版は、内蔵型PHPに比べ遅いとかありますか?
何か他に注意する問題とかありますか?
0743nobodyさん
02/11/14 17:33ID:l0/zicwoかなり遅いと思われ、
それするならperlと変わらん。
abでモジュール版PHPと普通のperlを比べたが
5倍ぐらい違う。
また、PHP アクセラレーターいれると
通常時とくらべて3倍速度が違う。
またCGI版PHPはCGI版perlより遅い、という話もあり
0744nobodyさん
02/11/14 17:37ID:l0/zicwoモジュール入れるべきじゃないかなー
アクセスが多いとCGI版では
プロセスがあがりすぎで
やってられないっていうのもある
0745nobodyさん
02/11/14 17:42ID:l0/zicwoperlで
@array = @array[sort {$array1[$b] <=> $array2[$a] or $array1[$b] <=> $array2[$a]}
0 .. $#array1];
っていうのは
PHPでどうかいたらいいんですか??
0746nobodyさん
02/11/14 18:02ID:???お返事thanx
バーチャル鯖だから、モジュール版をインストは無理と思われ。
というか、モジュール版が入っているのですが、safe mode onなのです。
しゃーないので、CGI版を入れるのです。
遅くてもしょうがないです (T.T)
0747nobodyさん
02/11/14 18:17ID:???0748nobodyさん
02/11/14 19:09ID:???動かしたいスクリプトがsafe mode onでは、動かないのです。
外部プログラム(多分C)を動かすため?
サブディレクトリも作ります。
0749nobodyさん
02/11/14 20:29ID:???ありがと。
調べた所.htaccessにphp_flag always_populate_raw_post_data Onとか書くと
使えるようになる最寄。やっぱ低レベルの処理も出来たほうが便利ね。
0750nobodyさん
02/11/14 21:08ID:???ローカルのマシーンRedhat Linux 7.2 で make した php を レンタルサーバ
(多分turbo)へFTPして動かそうと思ったら、
./php.cgi: /lib/libresolv.so.2: version `GLIBC_2.2' not found (required by ./php.cgi) ./php.cgi: /lib/libc.so.6: version `GLIBC_2.2' not found (required by ./php.cgi)
と怒られた。ローカルが glib 2.2 でサーバがglib 2.1.3 みたいです。
この場合、自分のところのglib を 2.1.3 に下げて make しなおしするしかないんですかねぇ?
それとも configure のオプションで対応できますか?( configure 見てみたけどなさそうな感じではあった。)
または、どこかにphpの各種バイナリがあるところはないでしょうか?
0751nobadyさん
02/11/14 21:27ID:itLwLG8ULinux用はRPMでの配布サイトでいっかしょしか知らない。ゴメソ。
0752nobodyさん
02/11/14 21:31ID:Kk7RsGj1される とどこの解説にもかかれているのですがうちの環境 Win2K&PHP4.2.2
だと$HTTP_POST_VARS[hoge]と配列からしか取り出せません
php.iniあたりを弄ればなんとかなるのでしょうか?
0753nobadyさん
02/11/14 21:50ID:itLwLG8U0754752
02/11/14 22:29ID:Kk7RsGj1ためらわずにやったらできますた、ありがとうございます
副作用がでるかもしれないのでしばらくは試用しますが・・・
0755nobodyさん
02/11/14 22:31ID:cSFACNwV$foo[$i] = $hoge.$i;
}
うぅん、こんな感じで作ったんだけど、
何故か$fooの配列になにも格納されない…
なんででしょう?
0756nobodyさん
02/11/14 22:47ID:???例をあげるとレスがつくかも知れん
0757nobodyさん
02/11/14 22:52ID:l0/zicwo$hoge.$iが妙に評価されてないか?
0758nobodyさん
02/11/14 22:54ID:l0/zicwo0759755
02/11/15 00:01ID:ZlqtGDCCようするに、$foo[0]に$hogeに代入されている文字列と、
0を結合したものを代入したいのです。
それをfor文を使って$foo[1]〜[12]も同じように
繰り返したいわけです…
0760nobodyさん
02/11/15 00:18ID:???12;34;56 a123456 123456z と言う文字列を作ろうと思うのですが
ログに 12;34;56<>a123456<>123456zと書き込んで読み出すのと
123456だけを書き込んで 3つに加工するのとでは
どちらがよい処理方法なのでしょうか?
0762nobodyさん
02/11/15 00:23ID:???誰かmailparse関数( http://jp.php.net/manual/ja/ref.mailparse.php )使ってる人いる?
いまいちよくわからないから参考になるページでもあると助かるんだけど。
0763755
02/11/15 07:02ID:fSn6fMud$year = sprintf("%4d",$today[year]);
$mon = $today[mon];
$nextyear = sprintf("%4d",$today[year]);
$nextyear++;
for($i=1;$i<=12;$i++){
if($mon>$i){
$link[$i] = $nextyear.sprintf("%02d",$i);
}else{
$link[$i] = $year.sprintf("%02d",$i);
}
}
といった感じで、リンクを作成するスクリプトなんです。
現在の日付を取得して、過ぎた月は「?次の西暦年+月」
現在の月と年内のそれ以降の月は「?今年の西暦年+月」
という風にしたいと思っているのですが…
0764755
02/11/15 07:26ID:fSn6fMud0765755
02/11/15 07:27ID:fSn6fMud0766nobodyさん
02/11/15 10:27ID:???$foo = array();
for($i=0;$i<=12;$i++){
$foo[$i] = $hoge;
$foo[$i] .= $i;
}
/* $foo[$i] = $hoge . $i;(半角スペースを間に入れる)でもOKかな? */
0768nobodyさん
02/11/15 17:14ID:mDnEDDpK■ このスレッドは過去ログ倉庫に格納されています