【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辺り
0459nobodyさん
2006/03/02(木) 21:39:44ID:???目的を履き違えてる。
エスパーきぼんぬなやつは、言ったところで改善は不可能なんだから、
それは自覚を促して丁重にお帰り願うための文面だ。
「エスパーきぼんぬのレスをもらわないための方法」など無い。
0461nobodyさん
2006/03/02(木) 21:41:55ID:???0462nobodyさん
2006/03/02(木) 21:42:31ID:???0463nobodyさん
2006/03/02(木) 21:44:19ID:???0465nobodyさん
2006/03/02(木) 22:28:50ID:???>>451の案で平和になるのが理想なんだし。
・・・けど、最近皮肉とかブラックユーモアって通じにくくなってるよな・・・
ちょっとさびしい。
0467nobodyさん
2006/03/02(木) 23:45:40ID:???0469nobodyさん
2006/03/03(金) 00:09:59ID:???0470nobodyさん
2006/03/03(金) 00:14:14ID:???普通に 「質問者のルール」 って題名で箇条書きにすればいいのに
わざわざわかりにくくしてるし。
0472nobodyさん
2006/03/03(金) 00:36:24ID:QWJoZw1q完璧は求めていないので。。
phpに移植が大変><;
誰か作ってくれないかなぁ・・・・
0473nobodyさん
2006/03/03(金) 00:38:27ID:???逆はともかく、Perl→PHPはPerl→sedとかPerl→awkが無いのと一緒で、
できないことがあまりに多すぎて作るの無謀だと思う。
0474nobodyさん
2006/03/03(金) 00:39:35ID:???「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
0475nobodyさん
2006/03/03(金) 00:44:00ID:???回答がもらえやすいと思ってずっと情報小出しにしてた
0476nobodyさん
2006/03/03(金) 00:50:56ID:???0477nobodyさん
2006/03/03(金) 05:26:03ID:???ひっぱってきてるんですが、
これをするとヘッダーファイルに画像の相対リンクとか貼ってある
ときに困ることになります。
(require()されるファイルの場所次第で画像のリンク先が変わってしまう)
絶対リンク使えばいいんですが、SSLを使ったりするときもあるので
これは避けたいと考えています。
画像のリンク先を変数かなにか使ってやるのがいいかと思うんですが、
上手く思いつきません、グッドアイデアお願いします
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」なんでしょ?
■ このスレッドは過去ログ倉庫に格納されています