【PHP】質問スレッドpart21【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/27 18:00ID:???・新規質問の方は上げてください。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
0352nobodyさん
04/09/02 16:49ID:???アップロード先ディレクトリのパーミッションが777以外で使えないのですが
他のパーミッションで使える方法ってありませんか?
0353nobodyさん
04/09/02 16:51ID:???Linux上で動いてるPHPだけど、スペース入りのパス作って Copy したけど、ちゃんと動いたよ。
スペースの問題じゃなくて、\ 記号をエスケープしてないとかじゃない?
0354344
04/09/02 16:54ID:???if ($fd = fopen($filename, "rb"))
としてやってみましたが、成功しているようです。
>>351
ファイルサイズが小さいものであればreadfileでできたのですが
ファイルサイズが大きいものをreadfileすると
ブラウザ上でサーバーが見つかりません
と表示されてしまいます。
0357nobodyさん
04/09/02 17:06ID:???なにが原因かはわかんないけど、サーバが見つかりませんってのは解せないね。
ループ一回ごとに Ob_Flush でも入れてみたらいいことあるかな?
0358nobodyさん
04/09/02 17:19ID:???0359nobodyさん
04/09/02 17:24ID:???0360344
04/09/02 17:37ID:???if ($fd = fopen($filename, "rb")) {
while(!feof($fd)) {
echo fread($fd, 4096);
ob_flush();
}
fclose ($fd);
}else{
echo "open error";
};
正しいかわかりませんが
でうまくいきました!ありがとうございました。
0363nobodyさん
04/09/02 21:12ID:???707はchmodとか使わない限り不要だろ
0364nobodyさん
04/09/02 21:34ID:???0365nobodyさん
04/09/02 21:39ID:???0366nobodyさん
04/09/02 22:55ID:???formの値がクリアされるが値を残す方法はありまつか?
0367nobodyさん
04/09/02 23:39ID:???JavaScriptとCookieで実現するのが一番常道だとは思う。
一応できなくはない、と。
0370nobodyさん
04/09/03 01:38ID:???テンプレート使ってるんだけど、そのページからsubmitして
confirmページへ飛ばして確認させて、間違いがあった人って
大半が「ブラウザの戻る」で戻しちゃんうんですよ。
0371nobodyさん
04/09/03 02:33ID:???0373nobodyさん
04/09/03 17:06ID:J5j4fe3Zphp /path/to/a,php
と起動すると問題なく実行できるのですが、
cron から 起動すると cronの実行は行われているのに、
a.phpの処理は行われないようです。
a.phpはエラーを吐くと思うのですが、
どうやってエラーを拾えばいいでしょうか?
php.ini の
log_errors = On
error_log = /path/to/error.log
を設定しましたが、エラーログははかれていないようです・・・
1行目のCGIコマンドを追加すべし。
#!/usr/local/bin/php
0375nobodyさん
04/09/03 17:43ID:???php コマンドにパスが通っていないだけでは?
cron に登録際に絶対パスで php コマンドを呼び出すとか。
/usr/local/bin/php /path/to/path/a.php
エラーを拾いたければ以下のように cron に登録すると簡単。
書き込み権限の確認を忘れないように。
/usr/local/bin/php /path/to/path/a.php &> /path/to/path/error.log
そういえば、私も別のパスからcron呼び出して相対パスで失敗したわ。
1行目でchdirで修正するのが楽かと。
0377nobodyさん
04/09/03 17:54ID:J5j4fe3Zorz・・・
ご指摘通り
/usr/local/bin/php
にパスが通ってなかっただけのようです。
cronからの起動だと /usr/local/bin/ のファイルもパス通ってないんですね・・・
・・・php側、全てフルパスに書き換えてしまった。
0378nobodyさん
04/09/03 17:55ID:???カレントディレクトリの違いでPHPスクリプトの中の include が失敗してるのかもよ。
cd /path/to/; php /path/to/a.php
ってやるとどうかな。
0379nobodyさん
04/09/03 18:02ID:J5j4fe3Zrequire するファイルのパスは気にしてたんですが・・・
phpのパスを気にしてませんでした。
0381nobodyさん
04/09/03 18:15ID:???705でやってるよ、俺は
0382nobodyさん
04/09/03 23:31ID:???SQLシンタックスエラーで帰ってくるんだけれど、
どうしたらいいの?
0383nobodyさん
04/09/04 00:35ID:???このページを参考に、PHPでメニュー領域とコンテンツ領域に分けたくて
色々やってみました。でもさっぱり分かりません。
リンク先、というかhtmlのフレームで言うtargetに当たる部分が全然わからない。
メニューはincludeできるんですけど、個々のメニューをクリックした時に
リンクされてるファイルを、同じページ内の同じ場所に表示する方法がどうしても分かりません。
今日は夕方位からずっとググりまくりで死ぬほど眠いので
明日また改めて質問させて下さい。その時はどうか宜しくお願いします。
0384nobodyさん
04/09/04 00:49ID:???0385nobodyさん
04/09/04 00:52ID:???コンテンツページすべてでメニューをインクルードすれば
メニューのよこにコンテンツが出力されたように「見える」ところがミソ。
0386nobodyさん
04/09/04 01:48ID:???おまいは騙されてる。
次の手段が考えられる。
1. SSI, PHP といったサーバサイドでの対応。
2. Dreamweaver 等、コンテンツ管理ツールの活用。
結論から言えば参照先の手法はオーバースペック。
自分で安全に運用する自信が無い、または手に余るなら迷わず 2 を選んでおけ。
つーか、俺がコイツと仕事したら良くも悪くも喧嘩になるな。
網羅的に語っているがどれも浅いよ。
営業さんとしては優秀かも知れないが。
0387nobodyさん
04/09/04 02:49ID:???その値に合うコンテンツを右っ側にインクルードするように作れば
ちょっとフレームっぽい感じ? あんま意味ないけど。
0388カポコン
04/09/04 02:57ID:???header("Expires:Sat,1 Jun 1975 00:00:00 GMT");
header("LastModified:".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control:no-cache,must-revalidate");
header("Pragma:no-cache");
include("menu.htm");
include("main.htm");
?>
こんなんでいいんじゃないのページの結合は・・・。
header()から中はあってもなくてもいいけど、キャッシュ対策で・・・。
0389nobodyさん
04/09/04 03:04ID:???385の普通さが逆に不思議だ
0390nobodyさん
04/09/04 03:12ID:???電波お花畑も含めて。
0391nobodyさん
04/09/04 03:15ID:???0392nobodyさん
04/09/04 03:34ID:???ネタが思いつきません。
>>383にあって俺に無いものはいったいなんでしょうか?
後日来ますので、その時はどうかよろしくお願いします。
0393nobodyさん
04/09/04 09:18ID:???|| Java厨の特徴 - Learn Once, Boo Anywhere -
|| ○なんでPHPは〜なの? を連発
|| ○他の言語の流儀を学ばずJavaの流儀を強引に持ち込む
|| ○言語仕様に矛先を向ける Λ_Λ
|| ○温室育ちのJavaしか出来ない可哀相な人が \ (゚ー゚*) キホン。
|| 業務で渋々PHPに流された哀れな姿です ⊂⊂ |
||___ ∧ ∧__∧ ∧__ ∧ ∧_ | ̄ ̄ ̄ ̄|
( ∧ ∧__ ( ∧ ∧__( ∧ ∧  ̄ ̄ ̄
〜(_( ∧ ∧_ ( ∧ ∧_ ( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
0394nobodyさん
04/09/04 13:05ID:vhwDcUgjマニュアルには以下のようにあります。
いくつかのオーペレーティングシステムでflock() はプロセスレベルで実装されています。
ISAPIのようなマルチスレッド 型のサーバーAPIを使用している場合、同じサーバーインスタンスの
並列スレッドで実行されている他のPHPスクリプトに対してファイルを保 護する際に
flock()を使用することはできません!
当方 Linux + Apache2.0 なのですが、サンプルコードでロックがかかるかどうか検証した結果、
きちんとロックされることを確認しました。
ということは、うちの環境では flock は期待通りに動く、ということでしょうか。
以下の試験方法に穴がありそうなら指摘してください。
検証方法は、あるファイルに対して flock して、sleep により数秒待ち、アンロックする、というスクリプトに、
ブラウザから複数アクセスしてみる、という内容です。
flock の直前直後、及びアンロックの直後でタイムスタンプを取得し、ブラウザ上に表示させ、処理が
重なっていないことを確認しました。
0395nobodyさん
04/09/04 13:17ID:???0397753
04/09/04 15:49ID:xk4dCUYphttp://www.php.net/manual/ja/keyword.extends.php
には、「派生クラスは、基底クラスの全ての変数と関数を有します。」
とあるんですが、関数にはアクセスできますが、変数のアクセスがわかりません。
サンプルは下記で考えました。
派生クラスでは、基底クラスのコンストラクタを暗黙的に呼び出さないので、
どこかで明示的に呼び出す必要があると考えてよろしいのですか?
でも、それだと、マニュアルと違うような気もするし。基底クラスのオブジェクトを
たくさん作ってしまうことになりませんか?
class A{
var $a = "value a";
function A(){
$this->a = "this is value \$a !!\n";
}
}
class B extends A{
var $b ;
function B(){
$this->b = "this is value BBB!!\n";
}
}
$obj_b = new B();
// これは"this is value BBB!!"が出力されるが
echo $obj_b->b ;
// これは何も出力されない(出力されるのを期待していたのだが)
echo $obj_b->a ;
// 基底クラスのコンストラクタを明示的に実行すると"this is value $a"が出力
$obj_b->A();
echo $obj_b->a ;
0398nobodyさん
04/09/04 16:23ID:???0400nobodyさん
04/09/04 17:34ID:VbBMSnkV<?=$subject?>
というのが出てきたのですが、これはいったいどういう意味なのでしょうか?
<?〜?>というのは知っているのですが、=が入っていきなり変数と言うのが
良くわかりません。
「<?=」で検索しようとしたのですが、記号だけなので検索できないようです。
誰か教えてください…
0402力不足
04/09/04 17:41ID:XFPNR40zフレームを使用して使いたいので、別窓で開くようにしたいのですが…
<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
$title = JcodeConvert($title, 0, 2);
echo "<h2>$title</h2>\n";
echo "<ul>\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$title = JcodeConvert($title, 0, 2);
$url = $item[link];
echo "<li><a href=\"$url\">$title</a></li>\n";
}
echo "</ul>\n";
?>
echoや $urlの後に" target="_blank"を入れたのですが…
いろいろいじくってみたんですが、わかりません。教えていただけないでしょうか?
0403nobodyさん
04/09/04 17:42ID:???「基本的な構文」も参照
ttp://jp.php.net/manual/ja/language.basic-syntax.php#language.basic-syntax.phpmode
設定によっては使えないので、使わないのが吉
0406nobodyさん
04/09/04 17:53ID:???Perlで以下のようにやっていたことをPHPでやりたいのですが。。
my $a = q(<a href="test.html">test</a>);
これがないと非常に不便かも…。
0409nobodyさん
04/09/04 18:33ID:T4Uqd+Ho0412nobodyさん
04/09/04 19:35ID:???0413nobodyさん
04/09/04 20:40ID:???あと、正規表現の場合とか ( http:\/\/ じゃなくて http:// とそのまま書けるし )。
PHP は定数も含められないし、関数も含められないのも不便。
0415nobodyさん
04/09/04 21:02ID:???'と"を多数混在させる必要があるとき、一々エスケープするのは大変だし、
見づらい(=エラーの元)
|なんか使わないから|でクォートさせろと
0416nobodyさん
04/09/04 21:14ID:???言語の仕様にいちいちつっこむなよ
0417nobodyさん
04/09/04 22:08ID:???qqが好きな人には綺麗でしょうね。
正規表現も希望通り http:// とそのまま書けるし
PHP は定数も含られし、関数も含められますよ。
煽る前に勉強し
0418nobodyさん
04/09/04 22:09ID:???HtmlSpecialChars( $str, ENT_QUOTES ); をやったところ、
「<」 と 「>」 と 「&」 は普通に変換されるんだけど、
「"」 と 「'」 だけ 「\"」 「\?」 になるんですが、
こういうもんなのでしょうか?
StripSlashes( HtmlSpecialChars( $str, ENT_QUOTES ) );
でもいいんですが…。
それと、逆に「<」なんかを「<」に戻す関数ってあるのでしょうか?
0419nobodyさん
04/09/04 22:18ID:???0420418
04/09/04 22:19ID:???×「<」なんかを「<」に戻す
○「<」なんかを「<」に戻す
でした…。
0421nobodyさん
04/09/04 22:19ID:???0422418
04/09/04 22:21ID:???うほ。。
×「<」なんかを「<」に戻す
○「&lt;」なんかを「<」に戻す
0423nobodyさん
04/09/04 22:24ID:???0424nobodyさん
04/09/04 22:49ID:???マニュアル嫁。
> 逆に「<」なんかを「<」に戻す関数
それについてもマニュアルの同区分に目を通せ。
というか、その必要が出てくるって事はエスケープ場所を間違えてる可能性 90%
0425nobodyさん
04/09/04 23:26ID:???php4.3.8で動くのだろうか?
0427nobodyさん
04/09/05 00:26ID:RfIBQAoo0428カポコン
04/09/05 00:43ID:???ttp://f13.aaacafe.ne.jp/~mugen/perlvsphp/child_btype.php
0430質問です
04/09/05 01:34ID:ISJ8aiP8登録したサイトの更新状況を定期的にチェックして、
更新部分を表示してくれるようなスクリプトってありますか?
ぐぐってみたのですが見つからず・・・。
0431nobodyさん
04/09/05 02:13ID:???最近威勢は悪いしソースは隠蔽だしつまんね。
aaacafeはlivedoorになるらしいけど移転しないの?
0432nobodyさん
04/09/05 02:42ID:???0433カポコン
04/09/05 02:46ID:???ふむん、俺はケチって日記に書いてるんだけどねぇ。。。
class blood{
var $child;
function cache($a,$b){
$i = 0;
if(preg_match("/^[aboABO]{2}$/",$a) and preg_match("/^[aboABO]{2}$/",$b)):
$pat = array("A" => "/a/","B" => "/b/","O" => "/o/");
$a = preg_replace($pat,array_flip($pat),$a);
$b = preg_replace($pat,array_flip($pat),$b);
$element[0] = preg_replace("/^(\w)(\w)$/e","\$1",$a);
$element[1] = preg_replace("/^(\w)(\w)$/e","\$2",$a);
$element[2] = preg_replace("/^(\w)(\w)$/e","\$1",$b);
$element[3] = preg_replace("/^(\w)(\w)$/e","\$2",$b);
$i = 0;
foreach($element as $val):
$this->child[$i++] = $val.$element[2];
$this->child[$i++] = $val.$element[3];
if($i === 4) break;
0434カポコン
04/09/05 02:47ID:???else:
echo("<span class=\"msg\">\n");
echo(nl2br("ABOタイプの血液データがありません。\n"));
echo("</span>\n");
endif;
}
function child_judge()
{
$a = $b = $o = $ab = 0;
if(is_array($this->child)):
foreach($this->child as $val):
$a += preg_match("/^(AA|AO|OA)$/",$val)?25:0;
$b += preg_match("/^(BB|BO|OB)$/",$val)?25:0;
$o += preg_match("/^OO$/",$val)?25:0;
$ab += preg_match("/^(AB|BA)$/",$val)?25:0;
endforeach;
endif;
echo("<ul>\n");
$span = "<span class=\"msg\"";
echo ($a !== 0)?$span."<li />".sprintf("生まれてくる子供は<b>A型</b>になる可能性が<b>%d%%</b>あります。<br /></span>\n",$a):"";
echo ($b !== 0)?$span."<li />".sprintf("生まれてくる子供は<b>B型</b>になる可能性が<b>%d%%</b>あります。<br /></span>\n",$b):"";
echo ($o !== 0)?$span."<li />".sprintf("生まれてくる子供は<b>O型</b>になる可能性が<b>%d%%</b>あります。<br /></span>\n",$o):"";
echo ($ab !== 0)?$span."<li />".sprintf("生まれてくる子供は<b>AB型</b>になる可能性が<b>%d%%</b>あります。<br /></span>\n",$ab):"";
echo("</ul>\n");
}
}
使う場合は、インスタンスを作ってからやるように。。
blood::cache()の参照はダメって事・・・。
0435カポコン
04/09/05 02:51ID:???0436nobodyさん
04/09/05 02:55ID:???0437nobodyさん
04/09/05 03:00ID:???0438nobodyさん
04/09/05 03:01ID:???板違い
ついでにいうと、まさしくそのスクリプトを書いている訳だが…
通常はhead取得で十分だが、動的生成だとうまく取得できない場合がある
で、head取得での取得に失敗した場合、ソースから更新日時と判断できる
文字列を正規表現で取得する
これに失敗した場合は、サイズを前のデータと比較して
変化していればその時刻を更新日時として扱う
これさえ満たしていれば、あとはcronで動かすだけで完璧だと思うが
広告が入っている場合、サイズの比較でうまくいかないようだ
とこんな感じだが、おまいも書いてみたら?
0439カポコン
04/09/05 03:07ID:???2ch用にreturnを変えたとか・・ワラ
0440nobodyさん
04/09/05 03:15ID:???2ch用に変えるんなら>で閉じて〜〜〜ワラ
0441カポコン
04/09/05 03:16ID:???0442nobodyさん
04/09/05 03:19ID:???http://qrl.jp/?u=114924
0443カポコン
04/09/05 03:43ID:???0444nobodyさん
04/09/05 03:56ID:???( ゚Д゚)ポカーン
0445nobodyさん
04/09/05 04:08ID:???ばかばかまんこ
0446nobodyさん
04/09/05 04:39ID:???0448nobodyさん
04/09/05 05:15ID:???0449nobodyさん
04/09/05 07:03ID:???この場合重さ・速さなどは CGI/Perl と大差無いと見ていいのでしょうか。
0450nobodyさん
04/09/05 07:16ID:???0451nobodyさん
04/09/05 08:10ID:PtpLgFxVほかにエラーが出てる人はいませんか?もう12時間以上悩んでます・・・
エラーが出た場合の対処方法も添えていただければありがたいです。
対処方法がのってるHPのアドレスでも結構です。
よろしくおねがいしますm(_ _)m
■ このスレッドは過去ログ倉庫に格納されています