【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
抜けているものがあったら補足願います
0517nobodyさん
04/08/17 18:03ID:Jto412WCというエラーが出て
サーバーやPHPの環境設定、ブラウザの設定等に問題がないかも
チェックしたほうがいいかもしれませんね。
と上司にいわれましたが設定のチェックの方法が分かりません。
知っている方教えてください。
0519軟式PHP
04/08/17 18:06ID:???0521nobodyさん
04/08/17 20:00ID:???$hash = array('key1'=>10, 'key2'=>20);
array_delete_key('key1', $hash); ← こんな関数ないっすかね?
array_key_exists('key1', $hash); #=> false
0524nobodyさん
04/08/17 20:33ID:???unset($hash['key1']);
でいけました。
そうか、$hash['key1'] 自体がひとつの変数ということか。
どうもありがとうございました。
0525nobodyさん
04/08/17 21:24ID:hQEO8cuEバージョンアップ不可の条件をいただいたのですが
4.0.3のマニュアルのURLご存じの方いたら教えて下さい。
ググったら「最低4.0.6まで上げる事をお薦めします.」とか書かれてて(´・ω・`)
0526nobodyさん
04/08/17 21:56ID:???普通にその辺のマニュアル使える。
例えば 4.3.0 から入った関数の場合、マニュアルに記載がある。
逆にマイナーバージョン固有のバグとかの場合はマニュアルには載らない。
前後の ChangeLog を地道に追う。
後はエラい人、補足よろ。
0527nobodyさん
04/08/17 22:03ID:???0528527
04/08/17 22:11ID:???0529nobodyさん
04/08/17 22:28ID:???ML に投げようかとも思ったけど、Google に残るのがイヤなのでこっちで。
取り敢えずコンピュータの管理はコントロールパネルからな。
それくらいググれ。
取り敢えず集中砲火浴びる前にここ読んで ML って何なのか掴んだ方がいい。
http://www.hyuki.com/writing/techask.html
で、分からない事全部が勉強だと思って調べまくる。それが当たり前に出来ないとこの仕事辛い。
特に知識系産業は国際間の壁が低く世界的に集約/役割が割れていくからどんどん寒くなる。
技能職って事で目の前の待遇の良さだけを見てるなら考えた方がいい。
それにプロって事は、責任だって相応。
俺は無関係だが、規模のデカい開発投資がプログラムで失敗して営業から展開から全部狂って悲惨な目にあったのを知ってる。
まぁその会社のマネジメントも悪いんだが、俺はたまたま開発担当を別件で知っていてコードもちょっと見た。
一番タチ悪いのはソイツが能力低すぎて、何が悪いのかさえ分かってないって事だ。
ML で何か言ってるが、顧客から見れば 俺初心者なんで とか明後日方向の事情は言い訳にもならない。
甘え捨ててもっと自助努力しる。
0530nobodyさん
04/08/17 22:43ID:LR9RAB4Qshell_exec('oggenc ファイル.wav -t "タイトル" -a "アーティスト名" > /dev/null &');
のようにすると日本語が######のように化けてしまいます。
(実際はshell_exec()の中身は.shファイルに書いてあってもう少し長いですが、上のように書いても同じ症状でした。)
何か良い方法は無いでしょうか?
環境はLinuxです。
0532nobodyさん
04/08/17 23:08ID:???Ogg 扱える PHP アプリケーションどこかで見たな、と思って PHP ogg でググってみると
コードいろいろ出てきた。
英語ね。
0534530
04/08/17 23:20ID:???スクリプトも全てEUC-JPで書いたのですが・・・。
試しにXウインドウから.shファイルを動かしてみたらちゃんと日本語になりました。
Xウインドウ無しだと日本語使えないのかと思って、
shell_exec('mkdir フォルダ');
みたいにすると日本語のフォルダ作ってくれたので、
Xウインドウ無しでも使えるみたいですし。
>532
英語ですか・・・。
苦手ですけど一応調べてみます。
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)になっています。
■ このスレッドは過去ログ倉庫に格納されています