【PHP】質問スレッドpart33【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/16(木) 03:19:52ID:xwXojaq/【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0478nobodyさん
2006/03/03(金) 07:26:08ID:???elsif -> elseifの置換ぐらいなら問題ないけど =~ であきらめた
sub -> functionも引数の取り扱いや変数のスコープが違って自動では無理
0479nobodyさん
2006/03/03(金) 07:35:07ID:???<?php
$imageDir = "../img/";
include "header.php";
?>
header.php
<style>
body { background-image: url("<?php echo $imageDir?>bg.gif") }
</style>
0483nobodyさん
2006/03/03(金) 14:38:07ID:WgfWnQX6php_pgsql.dll
とかがないんですが、どこから入れたらいいんでしょうか?
0484nobodyさん
2006/03/03(金) 14:54:20ID:???環境によって違うがFedoraCoreのrpmなら
/usr/lib/php/modules
に
mbstring.soやgd.soが入る
0485nobodyさん
2006/03/03(金) 15:10:50ID:WgfWnQX6あ、環境書かなくて申し訳ないです。
redhat9で、自分でPHP5をコンパイルして入れてます
-------
./configure
--with-apxs2=/usr/local/apache2/bin/apxs
--with-gd
--with-zlib
with-pgsql=/usr/local/pgsql
--enable-mbregex
--enable-mbstring
--enable-trans-sid
--enable-mcrypt
-------
で、入れてるんですけど、modulesもextもないです…。
あとから入れることってできないんでしょうか?
0486nobodyさん
2006/03/03(金) 16:42:21ID:???ソースのextディレクトリに各モジュールのディレクトリがある
好みのディレクトリに移動して
phpize
./configure --help
./configure --enable-hoge
make
make install
で
/usr/local/lib/php/extensions/*****/
あたりにインストールされる
0487nobodyさん
2006/03/03(金) 16:54:06ID:???ちなみにコンパイル時に指定したモジュールはphp.soに内蔵されるので拡張モジュールのように別ファイルにはならないよ
0488nobodyさん
2006/03/03(金) 16:58:58ID:WgfWnQX6ありがとうございます!
やってみますー
0489nobodyさん
2006/03/03(金) 23:29:21ID:t7JloJn3phpinfo();は表示されます。
print date("Y/m/d");と記述し、foo.phpで保存したものを、直接127.0.0.1/foo.php
とアクセスすると動作するのですが、
var.htmlに<?php print date("Y/m/d"); ?>
を記述し127.0.0.1/var.htmlにアクセスしても表示されません。
httpd.confやphp.iniは確認したのですが、うまくいきません。
原因はどこにあるでしょうか。
0490nobodyさん
2006/03/03(金) 23:58:51ID:???0491nobodyさん
2006/03/04(土) 00:05:16ID:???それは普通の振る舞い。apache側で設定すれば実行されないわけ
じゃないけどな。ただそれをするとapacheの負担にもなると。
0492nobodyさん
2006/03/04(土) 00:20:09ID:???0493489
2006/03/04(土) 01:45:09ID:aZXPUvQzサンプルソースにタグが入っていたので、perl CGIのように呼び出していると
思っていました。ありがとうございました。
0496nobodyさん
2006/03/04(土) 03:07:45ID:???ftp_puts()でファイルアップロードしようとすると
あるサーバーAにはちゃんとアップロードされるのですが
別のサーバーBだと0バイトのファイルが作成され、falseが返ってきます
ftp_nb_put()やftp_pacv()なども試してみましたが状況は同じでした
他に何か試してみるべき事はありますか?
0497nobodyさん
2006/03/04(土) 09:27:11ID:???パーミッション、ファイルのパスが合っているか、
また念のためソースの一部を書いたほうがわかりやすいと思います。
0498nobodyさん
2006/03/04(土) 10:32:48ID:???B:WEBサーバ
A、Bはそれぞれ別のネットワークにあります。
Aのデータベースに接続し、データを取得してきたり
修正したりするPHPプログラムをBに設置し、
B上の Apache のCGI(PHP)から
データの表示やまたは修正を行えるようにしています。
Apache では SSL を使用しているのですが、
この場合、MySQL側でもSSLを使用すべきでしょうか?
Aから引っ張ってくるデータは盗み見されると困る内容ですが、
上の例の場合、どこからどこまで Apache の SSL が
機能するのかよくわからなくなってきました。
0502nobodyさん
2006/03/04(土) 14:39:20ID:???$t_string = eregi_replace("</title>(.*)","",$t_string);
htmlソースからタイトル部分だけ取り出したいのですが、
上記のように二段つかっているのを1つにまとめるにはどうすればいいでしょうか。
0503nobodyさん
2006/03/04(土) 14:40:31ID:???サーバAにはSSLなApacheは入ってないんだろ?
なら当然Webブラウザ-サーバB間のHTTPSに対してのみSSL。
0504nobodyさん
2006/03/04(土) 14:49:18ID:???0505498
2006/03/04(土) 14:53:39ID:???グローバルIPを介しますが、
PHPのmysql_connect() を使用する場合HTTPプロトコルでの
データのやりとりになるのでしょうか?
0506nobodyさん
2006/03/04(土) 14:57:35ID:???ただ、それは暗号化されていない平文。
だから、途中でsnoopされたりするのが心配だってことだな。
MySQLプロトコルを暗号化するのは聞いたことがない。
どちらにしても、鯖側にも何かモジュール入れないと無理そうだけどな。
0507498
2006/03/04(土) 15:09:05ID:???ブラウザとApacheの間はSSLで暗号化されるのでいいとして、
問題はApacheとMySQLの間ですよね。
>>506
この場合、
ttp://itpro.nikkeibp.co.jp/members/ITPro/oss/20050819/166553/
のようにMySQLでSSLを使用するのと、PHPからMySQLへ接続することは
別問題なのでしょうか?
0508nobodyさん
2006/03/04(土) 15:50:49ID:???なんか色んなところでマルチしてないか?
>別問題なのでしょうか?
いや同じ話だよ。ただPHPのmysql関数ではSSLを使う仕組みが
デフォでは無いので、拡張版のmysqli関数を使ってSSLの設定をする。
あとPHPのコンパイルでSSLも要るな。
0509496
2006/03/04(土) 17:58:12ID:???紛らわしいので以下のように表現を変えます
サーバーA → サーバー1
サーバーB → サーバー2
>>497>>500
こんな感じでやっています
//HTML部
<form method="post" action="script.php" enctype="multipart/form-data">
<input type="file" name="up"><br>
<input type="submit" value="upload">
</form>
//PHP部
$name = "./".$_FILES["up"]["name"];
if ( !($ftp = @ftp_connect($host)) ){echo "connect error";}
if ( !@ftp_login($ftp,$user_id,$user_pass) ){echo "connect error";}
ftp_pasv($ftp,false);
if( @ftp_put($ftp,$name,$_FILES["up"]["tmp_name"],FTP_BINARY) ){
echo "<br>success";
}
else {
echo "<br>error";
}
ftp_close($ftp)
サーバー1、2ともパーミッションは755で、パスはユーザーのルートディレクトリです
あと最初に書き忘れましたが、FFFTPなどを使った場合はどちらも普通に操作できます
0510nobodyさん
2006/03/04(土) 18:20:02ID:WPEf+PS6require
require_once
の使い分けはどういう時に有効ですか?
0511nobodyさん
2006/03/04(土) 18:30:25ID:???includeとrequireは、
どんな条件下でも必ず評価されるものにはrequire
ある条件下で評価されない可能性がある(if文など)場合はinclude
理由はマニュアル嫁。
0512nobodyさん
2006/03/04(土) 18:33:47ID:???そのアップロードによって生成されているテンポラリファイルは確認してみた?
move_uploaded_fileして、一旦どこかに保存してやってみるとか。
0514510
2006/03/04(土) 18:48:08ID:WPEf+PS6具体的にどう使い分けるの?
分からないなら答えなくていいよ。
どうせ分かってないでrequire_once使ってんだろ。
0516nobodyさん
2006/03/04(土) 18:55:50ID:SB9snESx標準偏差や相関係数をJAVAではなくphpでやりたいのですが。
0517nobodyさん
2006/03/04(土) 18:56:32ID:SB9snESx標準偏差や相関係数をJAVAではなくphpでやりたいのですが。
0518nobodyさん
2006/03/04(土) 19:00:12ID:???正直俺もイマイチわからんので、わかったら教えてください
>>515
そういう無駄なことはいわなくていい。回答する気がないならスルー汁
0519nobodyさん
2006/03/04(土) 19:12:16ID:???俺も良く分からないまま使ってる
>>515
君の方が向いてないから止めた方がいいと思うよ
>>514は良く分からないまま使ってることが嫌で質問してるんだよ
これこそ向いてるでしょ
0520nobodyさん
2006/03/04(土) 19:30:31ID:???0522nobodyさん
2006/03/04(土) 20:26:32ID:???>>511が良回答。たぶんおまいらがこれ以上居座ると空気悪くなるのでくだらない発言は控えてもらえると助かる。
http://www.php.net/manual/ja/function.include.php
http://pear.php.net/manual/ja/standards.including.php
この2箇所読んでも不満や疑問があるならまた来ればいい。
とは言ってもpear標準は絶対必須というわけではないので、エラーの扱いについて正しく理解した上で明確な理由があるなら別の使い分けをしてもかまわない。
0523496
2006/03/04(土) 20:31:16ID:???スクリプトを他のサーバー3に置いて実行してみたところ、サーバー2にもアップロードできました
(サーバー1からスクリプトを実行しなかったのはFTP関数の使用が規制されているため)
どうもサーバー2からは自分自身にアップロードできないようです
スクリプトの不備ではなくサーバーの設定関係の問題のようなので
今後は自力でそっちの方を当たってみます
ありがとうございました
0524nobodyさん
2006/03/04(土) 20:32:43ID:???peclでこんなのあるけど。
http://www.php.net/manual/ja/ref.stats.php
0525nobodyさん
2006/03/04(土) 20:48:34ID:aGprecBmdefine('hoge', 'string');
echo "hoge is {hoge}";
echo "hoge is {'hoge'}";
↑どっちもダメでした。
0526nobodyさん
2006/03/04(土) 20:52:07ID:???投稿用テーブルkakikoにuser_idがあるのですが、ユーザ名が格納されているのは
ユーザテーブルusersの中のuser_nameです。
書き込み表示の時にユーザ名を表示させたいのですが、一旦kakikoからuser_idを取ってきて
その後にuser_idがある分だけusersからuser_id -> user_nameのSELECT文を発行しないと
いけないのでしょうか…
何かすごくマヌケなことをしている気がするのですが、これしか思いつかないもので…
user_id -> user_nameの関数を用意しても結局同じ数のSQLを発行しますよね
みなさんはどうやっていますか?
0527526
2006/03/04(土) 20:53:09ID:???echo "hoge is ".hoge;
普通大文字にすると思うけど。
echo "hoge is ".HOGE;
0528nobodyさん
2006/03/04(土) 20:53:45ID:???残念ながらPHPだと文字列リテラルに定数いれられないんです。
echo 'hoge is ', hoge; でがまんして。
0530nobodyさん
2006/03/04(土) 20:59:47ID:???sqlの話なのでスレ違いだけど
select * from kakiko, users where kakiko.user_id = users.user_id and なんちゃらかんちゃら
0531nobodyさん
2006/03/04(土) 21:00:39ID:aGprecBmヒアドキュメントの中で使いたいのですが
それだとソースがぐちゃぐちゃになっちゃいそう
>>527
無理ですか…
0533nobodyさん
2006/03/04(土) 21:09:50ID:???$hoge = HOGE;
$heredocument = "$hoge";
じゃダメ?
>>530
まだ理解できていないですけど、ちょっとやってみます。
0534nobodyさん
2006/03/04(土) 21:14:07ID:SB9snESx>peclでこんなのあるけど。
>http://www.php.net/manual/ja/ref.stats.php
php5.1以上ではphp_stats.dllをダウンロードして使えるようだが
それ以前ではだめみたいだね。実際php_stats.dll(5.12)を
試したが拒否された。
0535nobodyさん
2006/03/04(土) 21:20:38ID:???変数のパース
http://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing
定数≠変数。定数がパースされないのは無難な仕様だと思うけど。
0536nobodyさん
2006/03/04(土) 21:36:26ID:???あとヒアドキュメントでも
http://www.php.net/manual/ja/language.types.string.php#60971
この手がいけるかと思う。でも
>それだとソースがぐちゃぐちゃになっちゃいそう
が気になるなら、早々に何らかのテンプレートシステムを導入。
0538nobodyさん
2006/03/05(日) 03:26:56ID:???俺は同じプログラムでrequire_onceとrequireとincludeは使い分けてるけど
include_onceだけまだ使ったことないや。そういえば。
0539nobodyさん
2006/03/05(日) 11:55:08ID:???include_onceでPHP5のラッパー関数を定義しといて
PHP4の環境でも同じソースで済むようにしてる
0540nobodyさん
2006/03/05(日) 14:06:29ID:???自分でスクリプト書いてみたが、どうもうまく動かない・・
filesizeの取得がマニュアルによると「sprintf("%u", filesize($file))で2G越え
てもいけるぜ」と書いてあるけど、エラーで取得できず。
おまけにfopenでファイルも開けずエラー。
どうしたらよかとですか。
教えて、エロイ人。
0541nobodyさん
2006/03/05(日) 14:25:52ID:???「うまく動かない」→どう動かないんだ?
「エラー」連呼→エラー文はコピペしろ。
上記を踏まえて・・・ダウンロード、filesizeとか言ってる辺りから推測すると、
まさか、その1ファイルを全部PHPのメモリ上に乗せてから出力させてんのか?
それならロジックを変えるか、実装メモリを増やしてPHPのメモリ設定変更。
・・・どう考えても後者は実用的じゃないがな。
0543nobodyさん
2006/03/05(日) 16:36:09ID:???エラー内容はファイルサイズ取得で
「filesize() [function.filesize]: stat failed for ***」とでます。
fopenも同じエラーです。
メモリに一気に乗せるロジックではなく、freadでループさせて
吐き出そうとしてますが、それ以前の問題なんでつorz
>>542
PHP.iniのリミットのことですか。
ファイルサイズ取得、ファイルオープンと関係あるんでしょうか。
0545nobodyさん
2006/03/05(日) 18:55:22ID:???***のところはファイル名です(録画済ファイル)
具体的には
「filesize() [function.filesize]: stat failed for /video/1003_20060303220000_20060303225400.nuv」
のような感じです。
書くと、長くなるためとファイルの扱いに関係がないと思われたため記述を控えました。
0546nobodyさん
2006/03/05(日) 19:12:45ID:???ext\standard\filestat.cの中だけど
if (!IS_EXISTS_CHECK(type) || (errno != ENOENT && errno != ENOTDIR)) { /* fileexists() test must print no error */
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lstat failed for %s (errno=%d - %s)", BG(CurrentStatFile), errno, strerror(errno));
}
なので、'/video/1003_20060303220000_20060303225400.nuv’がfilestatusを取るのに
相応しくないだけっぽいな。
実際にそのファイルはあるの?(これは他のエラーになる筈だから違うか)
絶対パス指定ではどう?パスを短くしてみたらどうなる。
>>543
いや、エラーの詳細が判ったので今のところ関係ないと思われる<リソースリミット
0547546
2006/03/05(日) 19:18:13ID:???0548nobodyさん
2006/03/05(日) 19:25:31ID:???ファイルは実際存在し、ファイルサイズの小さなもの(60M程度)を
ダウンロードしてみるとダウンロードはできます(データも問題なし)。
パーミッション、オーナーともにダウンロードできるファイル
と同一のため問題なく思われます。
パス指定は現在絶対パスで行っています。
値はGETで取得、これも問題なく取得できています。
書き忘れましたが、apacheのバージョンが1.3.33、PHPのバージョンが5.1.2
です。
ああ、どうしたらよいものやら・・orz
0549nobodyさん
2006/03/05(日) 19:32:50ID:???0550nobodyさん
2006/03/05(日) 19:37:53ID:???0551546
2006/03/05(日) 19:39:21ID:???#define IS_EXISTS_CHECK(__t) ((__t) == FS_EXISTS || (__t) == FS_IS_W || (__t) == FS_IS_R || (__t) == FS_IS_X || (__t) == FS_IS_FILE || (__t) == FS_IS_DIR || (__t) == FS_IS_LINK)
if (php_stream_stat_path_ex((char *)filename, flags, &ssb, NULL)) {
/* Error Occured */
if (!IS_EXISTS_CHECK(type)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%sstat failed for %s", IS_LINK_OPERATION(type) ? "L" : "", filename);
}
RETURN_FALSE;
}
メッセージに変更はあるけど、別にチェックは余り変わってないな。
0552nobodyさん
2006/03/05(日) 20:13:54ID:???でもエラーは「filesize() [function.filesize]: stat failed for /video/1003_20060303220000_20060303225400.nuv」なんでしょ?
0553nobodyさん
2006/03/05(日) 23:08:03ID:???0554nobodyさん
2006/03/06(月) 10:35:47ID:???勘だけど、statした結果のファイルサイズ(st_size)が2GB以上だと符号付で見なしたときに負の値になって、PHPがどっかでエラーチェックのつもりで0と比較してエラーフラグ立ててるとか、どうせその手のアフォな話だと思うね。
>>540
というわけで、現時点ではPHPで2GB以上のファイルは扱えない、といったところか。
そもそもPHPのintはCのintそのままだからそこらのプラットフォームでは0x80000000以上の数値扱うこと自体に無理があるんだよな。
PHP6では多倍長整数がサポートされることを祈ろう。
0555nobodyさん
2006/03/06(月) 11:31:40ID:???マニュアルにあえてsprintf("%u")での対処方法が書いてあったところを見ると、
元々はstatの戻りをstringによる数字で扱ってて、うまく動いてたんだろうな。
ところがそれを忘れて改良してしまった部分があって今は動かなくなってしまった、
という可能性が高そうだな。PHPじゃよくある話だし。
0558nobodyさん
2006/03/06(月) 17:34:37ID:zhIGepD3fopenでファイル開いた後 fclose で閉じなかったら
どんな悪影響がでるんですか?
0559nobodyさん
2006/03/06(月) 17:37:15ID:???あと、書き込みしたままfcloseしてなかったらプログラム終了までフラッシュされずに
ファイルが破損する確率が上がるかも。
flockしっぱなしで放置するとプログラム終了まで他のプログラムがアクセスできなくなるかも。
そんなもんか?
0560nobodyさん
2006/03/06(月) 17:48:22ID:???まあ基本的にはOSが閉じ忘れを面倒見てくれる(もしくはPHPもやってくれるかな?)から大したことはないってのもある。
人によってはfopenしたのにfcloseしていないプログラムに気持ち悪さすら覚えるらしいことも頭に入れておくべし。
0561nobodyさん
2006/03/06(月) 19:45:27ID:???Web経由で起動しとったらURIを、コマンドラインから起動しとったら
コマンドラインを標準出力に吐き出したいんだが
ちからづくでならなんとかなったんだけど
格好良く書くナイス方法は無いかな
0563nobodyさん
2006/03/06(月) 20:08:13ID:???$msg = @ $_SERVER['REQUEST_URI'] or $msg = @ implode(' ', $argv) or $msg = 'おてあげ';
echo $msg;
てこと?
0566nobodyさん
2006/03/06(月) 23:11:58ID:6wJc3dTK<?include("print.php");?>
と書かれているとします。
この時print.php側で「sakura.html」のURLもしくはパスを取得し表示する方法はありますか?
$url = getenv('REQUEST_URI');
print $url;
とやってみた所
「print.php」が表示されてしまいます。
0567nobodyさん
2006/03/06(月) 23:27:25ID:???$_SERVER['REQUEST_URI']
0568nobodyさん
2006/03/06(月) 23:35:52ID:???sakura.htmlってのはPHPじゃないよね。
PHPのincludeはあくまでも、その場所にPHPのコードを
挿入するのと同じ動作だから。
|「print.php」が表示されてしまいます
とはならない。
0569nobodyさん
2006/03/06(月) 23:42:05ID:???すいません。includeの中身を
include ("http://***.com/print.php");
とURLで指定してました。
相対パスに変更した所、うまく動作しました。
0571皮先くん ◆N3i.Qu1SoY
2006/03/07(火) 09:35:07ID:W7VIXkndttp://society3.2ch.net/test/read.cgi/hosp/1141605385/
不当にタイーホされた産婦人科医をなんとか救い出そうと思います。
同じ医師としてこのような不当タイーホは絶対に許せません。
参考
ttp://www.kaog.jp/20060306top.htm
そこで、PHPを使って署名をつのりたいのですが、
これをたたき台にして可能でしょうか?
ttp://oresama.hopto.org/~sheel/phptest/formtest/form.php
問題は、これで署名されたあとにどのようにして
整形されたhtmlをたたき出すか、という点です。
それと可能なら現在までに集まった署名の数をリアルタイムで
表示させたいのですがどうしたら可能でしょうか?
0572nobodyさん
2006/03/07(火) 12:38:46ID:???0573nobodyさん
2006/03/07(火) 12:40:35ID:???もっと具体的に。
0575皮先くん ◆N3i.Qu1SoY
2006/03/07(火) 13:56:43ID:HRxo4IHm返答ありがとうございます。
署名文の入力は
http://oresama.hopto.org/~sheel/phptest/formtest/form.php
こちらで完了し、submitボタンをクリックすることで
text.batにどんどん追記されていく仕組みまではつくりました。
問題は、追記されていくtext.batをどのようにデータベースとして
取り扱うか、という点です。
CSV形式で追記していけばあとでいろいろと使えますか?
最終的にはたまった署名文を福島県警に郵送する予定です。
0576nobodyさん
2006/03/07(火) 14:30:48ID:???0577nobodyさん
2006/03/07(火) 17:25:02ID:???■ このスレッドは過去ログ倉庫に格納されています