【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あたりにきっと誰かが……。
0612604
02/10/28 18:26ID:RrSU6wqc試してみたら正常に動作したので、あれ? と思って調べると、
連鯖→4.2.3
テストマシン→4.2.2
だったので、4.2.2に直すと、正常に動作しました。
本当に4.2.3固有の問題なのかは分かりませんが、
動いたので良しとしまする。
0613nobodyさん
02/10/28 19:58ID:OVLPNyBEバックグラウンドでプログラムを走らせる実験として
test.phpというプログラムとtest_back.phpという
プログラムを作りました。
=======test.php==========
<?php
system ("/home/sites/home/test_back.php > /dev/null &");
echo "OK";
?>
=======test_back.php========
<?php
sleep (30);
?>
=====================
という風に、test.phpから、test_back.phpを
呼び出して、30秒間sleepするものです。
しかし、ps で確認しても、うまく呼び出されていないようです。
そのため、test.phpのほうの > /dev/nullを抜いて試してみた
のですが、すぐにOKが表示されるので、やはり呼び出されていないようです。
色々と調べて、自分では、間違っていないつもりなのですが、
問題点が、分かりましたら是非、教えてください。お願いします。
0614nobodyさん
02/10/28 20:39ID:h954DWc8それともネタ
0615605
02/10/28 21:06ID:???過去ログ見ました!
解決しました。
メールのヘッダの最後に改行があると、本文の頭に付いちゃうのね…
俺の場合、追加ヘッダの最後の改行を取ったら解決しました。
ありがとうございました。
0616613
02/10/28 21:18ID:OVLPNyBEネタじゃないです。本当にやりたいことは別にあるのですが、
それ以前に、プログラムがうまく動かないので、問題の洗い出しのため
簡単にして試してるだけです。
このシンプルなコードでさえ、動かないので・・・(・ω・)
0617nobodyさん
02/10/28 21:49ID:???tmpfile();でできたファイルの名前を取得する術はないのでしょうかー。
0618nobodyさん
02/10/28 21:56ID:h954DWc8HTML入門
PHP入門
PHP文法書
■ グロバールリンク
ある別なサイトへリンクする際に使用します。リンク先のURLは(http://で始まる)で入力します。
<A HREF="★">〜</A> ★=URL
又、<A HREF="★">内にTARGET="_blank"を設定するとリンク先のページが、新しいWIndowを開いて表示されます。〜には、リンクを示す文章を入力します。
0619nobodyさん
02/10/28 22:03ID:???最近の若いもんはマニュアルが読めないのか?
漢字が分からんのか?
ひらがながわからんのか?
まあ、術と言っちゃなんだが、
マニュアルの 「XXXファイルシステム関数」 を見れば答えが見つかるかも知れないな。
0620nobodyさん
02/10/28 22:31ID:???0621nobodyさん
02/10/28 22:51ID:h954DWc8system 関数や、exec 関数の関数リファレンスを見ると、
次のような記述があります。
「この関数を使用してプログラム実行を開始し、
バックグラウンドで実行したままにしたい場合には、
プログラムの出力をファイルまたは他の出力ストリームに
リダイレクトする必要があることにも注意して下さい。
さもないと、PHPはそのプログラムの実行が終了するまでハングします。 」
この文章の意味は、下記のプログラムのように記述しなさいという意味です。
system("/home/your/bgprog $arg1 $arg2 > /dev/null &");
test_back.php のパーミッションは?
0624nobodyさん
02/10/28 23:36ID:h954DWc8system関数は外部プログラムを呼ぶための・・・
何で、Webホルダーのphp自身を呼ぶの
0625613
02/10/28 23:56ID:OVLPNyBE644で駄目だったので、755にしました。
>>624
本当は、ブラウザからだとタイムアウトになるかな?程度の数の
メールマガジンを発行するようなシステムにしたいのです。
それがうまくいかず、プログラムを削っていったら、こんな形に・・・。
これって、ブラウザからでもコマンドラインからでも駄目なのですが
なぜでしょうか?
cgi版かcli版のphpはインスト済み?
それと1行目に
#!/usr/bin/php
とかが必要。
もしくは、
system("/usr/bin/php /usr/sites/home/test_back.php .....
で実行するかだな。
0627nobodyさん
02/10/29 00:09ID:TKErwWFl<?php
system ("C:\WINDOWS\NOTEPAD");
echo "OK";
?>
0628613
02/10/29 00:52ID:TzxoQcf+どうも有難うございます。コマンドラインからの実行の際は
#!/usr/bin/php の部分が抜けていました。
その点を修正して、試しに、パーミッション777にしてroot権限で
実行してみましたがそれでも、Permission denied になってしまいます。。
これは、プログラムではなく、何かシステム的に原因があるのでしょうか?
なぜ、Permission denied かわからんが、試しに
which php
と打つとどぉよ。
0631613
02/10/29 11:13ID:TzxoQcf+which php で帰ってきたパスは
/usr/local/bin/php です。
1行目のこのパスを書いてますが。それでも駄目みたいです。
0634613
02/10/29 12:23ID:TzxoQcf+試してみましたが、駄目みたいです。
>>633
コマンドラインからだと動いてません。
ブラウザからだと、ちゃんと動作します。
試しに、シェルスクリプトで試してみたところ動作しました。
=test2.php=========
<?php
system("/bin/sh ./sleep.sh &");
echo "OK send.php<br>";
?>
=sleep.sh=========
sleep 5
==============
phpをコマンドライン上から実行できないのが原因でしょうか?
0636nobodyさん
02/10/29 12:58ID:wf/l5by6この設定によってaddslashes()をするかどうかを分岐したいので。
magic_quotes_gpcがオンの場合でaddslashed()しちゃうと2回エスケープしちゃいますよね。
0637nobodyさん
02/10/29 13:26ID:???var_dump(ini_get("magic_qoutes_gpc"));
string(0) is global value
string(1) is local value
どのバージョンから使えるかはしらんです。
0639636
02/10/29 13:48ID:wf/l5by6サンクス子
できました。ありがとう。
0640nobodyさん
02/10/29 13:49ID:???やりたいことと違うかもしれないけど
http://pc.2ch.net/php/kako/1003/10032/1003283567.html
このスレで教えてもらってうまくできたよ。
0641nobodyさん
02/10/29 16:28ID:tR/mb4fjApacheの設定ファイルにも AddType application/x-httpd-php .phpって追加したけれど
表示されません。どうしたら表記できるでしょうか?
誰か教えてください。
0642PHPの日本語
02/10/29 16:37ID:vXsUrIJbなぜかPHPのスクリプトが記述してあるファイルはEUC/LFでないと文字
化けしてしまいます。しかし、ブラウザのエンコードを見るとシフトJIS
なんです。
同階層にあるHTMLファイルはSJIS/CR+LFで全然問題ありません。
別の僕が構築したテスト用サーバではPHPのファイルがSJISでも全然問題
ないのですが?
どういう状況なんでしょう?
php -v
が実行できる?
0644613
02/10/29 17:17ID:TzxoQcf+php -v
bash: php: is a directory
とでました。レンタル鯖なのですが、php のインストールの仕方に
問題があるんでしょうか?
はへ?
/usr/local/bin/php -v
では?
/usr/local/bin/php のパーミッションも。
レンタル鯖の設定で実行させないようにしているのかもね。
0646613
02/10/30 02:35ID:NfkYl6Lzこれもやっぱり
bash: /usr/local/bin/php: is a directory でした。
ディレクトリの中身はこんな感じでした。何が問題でしょう?
drwxr-xr-x 2 root root 1024 Jun 7 13:57 .
drwxr-xr-x 3 root root 1024 Jun 7 13:57 ..
-rwxr-xr-x 1 root root 10018 Mar 5 2002 pear
-rwxr-xr-x 1 root root 4325 Mar 5 2002 pearize
-rwxr-xr-x 1 root root 500 Mar 5 2002 php-config
-rwxr-xr-x 1 root root 593 Mar 5 2002 phpextdist
-rwxr-xr-x 1 root root 700 Mar 5 2002 phpize
-rwxr-xr-x 1 root root 5088 Mar 5 2002 phptar
0647nobodyさん
02/10/30 03:01ID:???Apacheモジュール版のPHPじゃないの?
0648613
02/10/30 03:28ID:NfkYl6Lz>Apacheモジュール版のPHPじゃないの?
/usr/local/bin/php のディレクトリの中の中身が
>>646 です。>>647 さんのいうように、Apacheモジュール版のPHP
じゃないってことが原因?
のようですな。(ぉィぉィ)
つうことで、wgetを使いませう。
system ("wget URL/test_back.php > /dev/null &");
0650nobodyさん
02/10/30 13:43ID:dL3lvkbY<php? hogehoge ?>だったら動くのですが<? hogehoge ?>が動きません。
現在の環境は、VineLinux2.6+Apache/1.3.26+PHP/4.2.3です。
原因を教えていただけると幸いです。
どなたか宜しくお願い致します。
0653nobodyさん
02/10/30 14:03ID:LfLiEMdashort_open_tag = Onで解決しました。
お騒がせしました。
0654nobodyさん
02/10/30 15:30ID:???どうすればよいでしょうか?
私の見た限り、ズバリな関数はマニュアルには載っていませんでした。
0657YAHOOO情報
02/10/30 15:53ID:9DFYsx8y0658nobodyさん
02/10/30 18:56ID:4q8hzZpWarray_spliceとかarray_sliceとか
0659nobodyさん
02/10/31 01:40ID:yMK1gcv2最低、生ログ(訪問回数含)が見れればいいんだけどね。
0660nobodyさん
02/10/31 04:15ID:YDMbLtmR$_SERVERをマニュアルで探してみる
0661ノンノン
02/10/31 11:16ID:Gi8DIir1で、ログイン時にIDなどをセッションレジスタに取り込んでいるのですが、
個人情報の更新する時にSSLを使用するとセッションの内容がなくなって
しまってるんです。「セッション切れ」とでも言うのかな?
SSLへセッションを引き継ぐにはどうすれば良いのでしょうか?
おわかりになられる方がいらっしゃいましたらお教え願います。
ヨロシクお願いします。
ちょっと前に、バーチャルホスト間のセッション共有があったが、基本的に
同じことだと思うよ。cookie経由で引き継がれるかどうかわからんので、
SSLなページを指定するURLにPHPSESSIDを追加したらどうでしょう。
ただ、SIDってcookieが有効だ(とわかる)と空になるので、
<form action="https://www.hogehoge.com/sslpage.php?PHPSESSID=<?=session_id()?>" method=....
とかかな。もっと簡易な方法がありそうだが...
ただし、未検証です。
0663ひよこさん
02/10/31 21:39ID:XxGc2Q670664nobodyさん
02/10/31 21:43ID:???0665nobodyさん
02/10/31 22:51ID:???ここで調べれ
http://www.php.co.jp/
http://www.php.com/
0666nobodyさん
02/11/01 07:12ID:???扱い上は別のホストに移ってるのと等価だから、セッション変数を受渡しできる方がまずい。
ホストを跨ぐようなデータのやりとりをしようとする事がそもそもの間違いだと思うんだが…
PHPのセッション処理はホストを跨いでやり取りできないようになっている。
勿論、セッションIDも他のホストに晒すものではないが、
信頼できる同一ホスト上で、別ホストとみなされてセッションが引き継がれ
ないのを何とかしたい。
ってのは、間違いではないと思うが、どぉよ。
0668nobodyさん
02/11/01 14:29ID:rT5mgBbe思っているのですが、どのような形で作ればよいか教えてください。
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する時のことを指しています。
■ このスレッドは過去ログ倉庫に格納されています