【PHP】質問スレッドpart20【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/06 15:44ID:paJ4kjjQ・新規質問の方は上げてください。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
抜けているものがあったら補足願います
0535nobodyさん
04/08/17 23:32ID:???例えば Fedora は UTF-8 がデフォです。それに PHP の設定や Ogg のエンコード環境は別ではないかと。
あとまぁ英語出来ないと一定以上の事出来ないので。
Ogg とか人があまりやってない事をやろうとすると特に。
0536530
04/08/17 23:42ID:???0537nobodyさん
04/08/18 00:13ID:???# mp3 の ID タグ? 編集ライブラリとかも見たことあるので海外探せば ogg も転がってるかも
# で、それに日本語関連の修正&メモ書き入れて weblog か wiki にでも押し込んでおけば皆幸せ (・∀・)
って無責任に言うだけもな〜 と思ってググってると PEAR で見つけました。
http://pear.php.net/package/File_Ogg
0539nobodyさん
04/08/18 00:50ID:???つか、PHP-usersでも最近出てたと思うが、
"PHPがshell関数で動かす環境の"言語等の設定がそもそも何なのよ。
keyword:LANG
0540nobodyさん
04/08/18 11:56ID:x3r+WkyO最近お世話になりっぱなしですが、よろしくです。
セーフモードがオンのサーバーで
Warning: mkdir(): SAFE MODE Restriction in effect
となってしまうのですが、
オンのサーバーでもディレクトリーを使う方法?
はないでしょうか?
もしくは、無理なのでしょうか?
よろしくお願いします。
0542nobodyさん
04/08/18 12:36ID:???うぉーありがと。
ってことはやっぱり代わりに使えるものがあるってことですね?
マニュアル声出して読んでみますw
「セーフモードにより制限を受けるか無効となる関数」
ってページあってそこを見ると自分の使ってる関数が沢山でてて・・・
いやになるw
ありがとさんでした!
0543nobodyさん
04/08/18 12:42ID:???マニュアルの使い方を覚えるだけで、PHP は 256 倍楽になるのに。
不用な本買わなくてもいいからお財布にも地球にも優しい。
> mkdir() 処理を行うディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。
0545軟式PHP
04/08/18 12:54ID:???0546軟式PHP
04/08/18 12:55ID:???0547軟式PHP
04/08/18 13:08ID:???0548541=543
04/08/18 14:30ID:???0549nobodyさん
04/08/18 15:06ID:???0550軟式PHP
04/08/18 15:29ID:???0551nobodyさん
04/08/18 15:33ID:???0552nobodyさん
04/08/18 15:58ID:???ってなんだよウワァァァァン
0555552
04/08/18 16:23ID:???0556軟式PHP
04/08/18 16:32ID:???r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 よく頑張ったじゃねぇか。
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ もうちょい先まで読んでみようぜ。
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0557552
04/08/18 16:37ID:???0558nobodyさん
04/08/18 16:38ID:???0559nobodyさん
04/08/18 16:39ID:???> headers already sent
0560552
04/08/18 16:40ID:???0561nobodyさん
04/08/18 16:40ID:???echo とか print とかしてると 起こりやすいね。
0562552
04/08/18 16:42ID:???<?php
if ($action == "投稿"){
$mynews = 'page/〜/data.cgi';
$file = file($mynews);
$count = count($file);
if ($count > 10){
$count = 10;
}
$host = getenv("REMOTE_HOST");
$addr = getenv("REMOTE_ADDR");
if($host == "" || $host ==$addr){
$host = gethostbyaddr($addr);
}
list ($name2,$url2,$title2,$comment2,$host2) = split( ",", $file[0]);
if ($host != $host2 && $url != url2){
$input = implode(",", array($name,$url,$title,$comment,$host));
$fp = fopen($mynews, "w");
flock($fp,LOCK_EX);
rewind($fp);
fputs($fp, "$input\n");
for($i = 0; $i < $count; $i++){
fputs($fp, $file[$i]);
}
flock($fp,LOCK_UN);
fclose($fp);
unset($file);
}
header ("Location:http://〜/index.php");
}
?>
0563nobodyさん
04/08/18 16:43ID:???> Cannot modify header information
の前に何かエラーか警告が出力されてないか
<?php の前に改行や空白がないか
0564562
04/08/18 16:50ID:???空白もナイポ
0565nobodyさん
04/08/18 16:54ID:???マジきもいんだけど
0566nobodyさん
04/08/18 16:57ID:???それからエラーの出ているHTMLのソースはどうなってるかよく見てみれ
0567nobodyさん
04/08/18 17:11ID:???ヘッダー情報-、(/usr/家/自由な/家/市場/public_html/mmorpg/index.php
で始められた出力: 4)既に送られたヘッダー-を修正することができません。
この辺りも見とけ
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
headerの行を削除した時に、全く何も画面出力されていないことが必要だぞよ
0570nobodyさん
04/08/18 17:37ID:???0571nobodyさん
04/08/18 17:41ID:???無償のレンタル鯖でアクセス制限が掛けられない時、
データファイルの拡張子をcgiにしておけば、URL直打ちでも
データファイルを覗かれないという利点がありますけど。
0572nobodyさん
04/08/18 17:43ID:???500がでて見れないようにしているんだと思う
# 自分だったらそんな変なことしないで.htaccessによるアクセス制限するが
0575nobodyさん
04/08/18 19:03ID:???さんざんやってたような希ガス
0576nobodyさん
04/08/18 19:05ID:QMhJW4BU0577nobodyさん
04/08/18 20:07ID:???0578nobodyさん
04/08/18 20:31ID:???0579578
04/08/18 20:32ID:???0580nobodyさん
04/08/18 21:10ID:???すげー。このサイト全部 GIF かよ。ってことになるのか。
で、GIF 画像を表示するとき困らないかしら。
あふぉなブラウザが勘違いして妙なことになりはしないかしら。
わたしもやってみよー。
0581nobodyさん
04/08/18 22:03ID:sgbsN4EW$str = <<<EOS
aaa $x bbb
EOS;
この例なら $x を展開しようとして「初期化されてない変数」というエラーがでてしまう。
もちろん \$x と書けばいいのだが、ちょっと面倒くさい。
$s = <<<'EOS'
aaa $x bbb
EOS;
と書いたら変数展開されないかなーと思ったけど、シンタックスエラーだ。
0582nobodyさん
04/08/18 22:29ID:???0583nobodyさん
04/08/18 22:52ID:???jsp にしたら多少リソース喰っても許される
aspx にしたら客が他に移管するって言い出さなくなるし単価も上がり、初期投資も色乗せれる
cgi にしたら単価下がるけど杜撰な運用でデータ漏れても泣き寝入り度上がる
php にしたら 普通じゃーん と思われつつ、人員の技能レベルとセキュリティホールやバグを執拗に心配される
まぁどれを選ぶかはおまい次第だ。
# .html を被せて運用してるところはマジであるよね。運用情報隠して被いたずら/クラッキング率を下げる
0584nobodyさん
04/08/18 23:14ID:???0585nobodyさん
04/08/18 23:20ID:???1字付け足してエスケープするのが一番楽だろう。
それかその部分だけエラー制御で殺す。テンプレートエンジンはコレやってる。
ヒアドキュメント自体そんなに使う物でもないし、不満になってきたら他のやり方探す方がいい。
0586nobodyさん
04/08/18 23:22ID:???> それかその部分だけエラー制御で殺す。テンプレートエンジンはコレやってる。
考え無しにコレをやると脆弱性作るぞ。
運用段階で register_globals を有効にされたり、そのコードの前で外部変数を extract されたらまさに鴨。
テンプレートエンジンがソレやって許されるのは、きっちり閉じ込めてあるからで。
0587nobodyさん
04/08/18 23:27ID:???0588nobodyさん
04/08/18 23:28ID:???PHP の変数ではなく、> 変数 $hoge に対して~ とか文章の流れで $var が出てくるってのなら、
$ はエンティティにでもしておくのが妥当だと思われ。
0590530
04/08/19 01:08ID:???シェルからphp hoge.phpとしてphpを呼び出すとちゃんと日本語にしてくれて、
apacheから呼ぶと駄目みたいです。
どっちも同じユーザーでやってみたので権限の問題でもないようですが、
もうさっぱりです。
どなたかご教授願います。m(_ _)m
>>539
PHPがshell関数で動かす環境の言語とは何処を設定すれば良いですか?
PHP-usersも検索してみましたが探し当てられず・・・。
0591nobodyさん
04/08/19 01:37ID:???shell_exec('touch 日本語のファイル名.txt');
としてapacheとシェルから実行したらどうなるかやってみてよ
0592530
04/08/19 01:54ID:???mkdirでも出来たので予想はしてましたけど、
apacheとシェルどちらもEUC-JPで日本語名のファイル作ってくれました。
EUC-JPで.shファイル作ってやっても出来たので、oggencの引数はEUC-JPで良いみたいですし。
何が悪いのでしょう?
0593nobodyさん
04/08/19 02:00ID:???0594530
04/08/19 02:11ID:???やりました。
apacheからやった場合は文字コードの1バイトが#に置き換わって表示されます。
シェルからやった場合は#と?で出てきます。
どちらも英字の部分は普通に表示されています。
0595581
04/08/19 02:15ID:???どうもありがとう。
背景をちょっと説明すると、PHPスクリプトの中にPHPスクリプトを書く必要があって、
それをヒアドキュメントで書いています。
$code = <<<EOS
#PHPスクリプトをここにかく
<?php echo \$x ; ?>
EOS
それで、Cut&Pasteで貼り付けてるんだけど、そのあとに¥でエスケープするのが
面倒だったので質問しました。
\n なんかも \\n としなきゃいけないんで、結構面倒なんですよ。
まあ頑張ってちまちま直します。
>>587
どういう意味?
0598nobodyさん
04/08/19 09:23ID:???0599もん吉
04/08/19 10:35ID:???SQL文で
$sql = "SELECT * FROM data WHERE NAME LIKE '%".$data."%'";
$dataは前ページからもらってきたデータが入ってるんですが
データベースの中身(NAME)が全角(例:カーショップ)の場合で
$dataが半角(例:カーショップの場合bとかjでした)の場合
なぜか引っかかってしまいます。
これはなぜでしょうか?
0600nobodyさん
04/08/19 10:58ID:???$hoge .= "ほげ";
これだとエラー。
$hoge = "";
$hoge .= "ほげ";
これだとエラーなし。
そういうもんなんでしょうか?
php4.3.4
0601もん吉
04/08/19 11:06ID:???先に$hoge = ""; としておかないと追加する場所がなく
エラーが出るのだと思います。
$hoge = "ほげ";だと問題ないですよ。
0602nobodyさん
04/08/19 11:07ID:???いれば教えてホシイのですが、どういう手段で文字コード変換やってますか?
jcode.phpとかだと半角カナをうまく使えないですし、
かといってレンサバなのでphp.iniをいじくったりモジュール追加できないので悩んでいます。
0603nobodyさん
04/08/19 11:16ID:???0605nobodyさん
04/08/19 11:26ID:???0606nobodyさん
04/08/19 11:43ID:???0608nobodyさん
04/08/19 12:02ID:???そもそもjcode.phpって必要
0609nobodyさん
04/08/19 12:03ID:???0610nobodyさん
04/08/19 12:26ID:???Warning: fputs(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 20
Warning: fclose(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 24
Warning: Cannot modify header information - headers already sent by (output started at /usr/home/free/home/market/public_html/mmorpg/link/index.php:19) in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 28
もうだめぽ_| ̄|○
0611nobodyさん
04/08/19 13:06ID:???とはどういう意味でしょうか?
0613Imo ◆.jC7ANgFY.
04/08/19 13:23ID:???文法エラー
文法上の誤りがあります。
本来、case(T_CASE)またはdefault(T_DEFAULT)または}であるべき
ところが文字列(T_STRING)になっています。
0615611
04/08/19 13:27ID:???case1:$a = "q";break;
case2:$a = "w";break;
case3:$a = "s";break;
case4:$a = "x";break;
}
って間違ってるのかな〜
0616nobodyさん
04/08/19 13:33ID:???0619軟式PHP
04/08/19 14:39ID:???case 2
case 3
case 4
だろ。
0620nobodyさん
04/08/19 14:43ID:HVGJn52bが167にならないのって一体どういう事だ?
おかげで徹夜しますた。
0621Imo ◆.jC7ANgFY.
04/08/19 14:59ID:???注意: 引数の値が 2 つの整数の中間にある場合の ROUND() の動作は、
C ライブラリの実装に応じて決まる。
実装に応じて、最も近い偶数に丸められる場合と、
常に切り上げまたは切り下げられる場合、
あるいは常にゼロ方向に丸められる場合がある。
特定の丸め方法を必要とする場合は、この関数ではなく、
TRUNCATE() や FLOOR() などの明確に定義された関数を使用するようにする。
0624軟式PHP
04/08/19 15:13ID:???あと俺はcase処理を1行で書くのは嫌いだな。
619のようなやつだったら配列処理でいいし。
0625620
04/08/19 15:15ID:HVGJn52bなんか>>621の文言が言い訳にしか聞こえない(^^;
で、結局「四捨五入」する方法ってどれなの?
TRUNCATE() や FLOOR() ってどう工夫すると期待した結果が得られるの?
0626nobodyさん
04/08/19 15:20ID:???0627nobodyさん
04/08/19 15:20ID:???私も書き方は気に入らないが個人の好みもあるし
最初はあんなものでしょ
>>625
てかMySQLにいけ
オマケにマニュアル読め
0628nobodyさん
04/08/19 15:32ID:???"四捨五入 銀行型"辺りでぐぐれ
明確にされてないのが気に食わないのかもしれないが、
そのround実装は普通(の範疇)だ
0629Imo ◆.jC7ANgFY.
04/08/19 16:12ID:???私はマニュアルをコピペしただけですが?
0.5引いて切捨てしろってことだろ
FLOOR(`num` - 0.5)
0630nobodyさん
04/08/19 16:14ID:h2ZrLQAF教えて頂きたいのですが、
アドレスで
123/456/
の時は最後の「/」を削除して
123/456
の時は何もしない
最終的にどちらも123/456
となるようにしたいのですが、
何か方法ないでしょうか?
よろしくお願いします。
0631Imo ◆.jC7ANgFY.
04/08/19 16:17ID:???最後が「/」の時は最後の「/」を削除して
ほかのときは何もしない。
をそのままプログラムにすればいいじゃない。
0633nobodyさん
04/08/19 16:37ID:???ども〜
マニュアルみてきました!
$trimmed = rtrim($text," \t.");
ってのがのっててそれで目的が達成できそうです。
欲しい関数はなんでもありますねw
ありがとうございました!
0634nobodyさん
04/08/19 16:43ID:???630ではないが、rtrimってこういう使い方もあったのか・・・知らなかった
「/」が可能という事は全ての文字で利用出来るという事ですね
0635nobodyさん
04/08/19 16:45ID:???rtrim()は以下の文字を削除します。」と書いてあるが空白文字以外でも利用出来るなら
そう書いてくれよ
■ このスレッドは過去ログ倉庫に格納されています