トップページ⇒php
1001コメント280KB

【PHP】質問スレッドpart20【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/06 15:44ID:paJ4kjjQ
・PHP全般の質問スレです。
・新規質問の方は上げてください。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


抜けているものがあったら補足願います
0514nobodyさん04/08/17 17:15ID:???
>>513
ソース読めば確認できるだろうが。
どこで何を読み込むかも管理できずに書いてるのか?
0515nobodyさん04/08/17 17:24ID:???
>>513-514
あまり使われる事は無いが
get_included_files()
0516nobodyさん04/08/17 17:29ID:???
>>514
人様の書きやがったスパゲティなコードの修正なんです。

>>515
ありがとうございます (_ _)
0517nobodyさん04/08/17 18:03ID:Jto412WC
Apache monitor is already started
というエラーが出て
サーバーやPHPの環境設定、ブラウザの設定等に問題がないかも
チェックしたほうがいいかもしれませんね。
と上司にいわれましたが設定のチェックの方法が分かりません。
知っている方教えてください。
0518nobodyさん04/08/17 18:05ID:???
>>517
上司にからかわれてるだけだよ
0519軟式PHP04/08/17 18:06ID:???
(つω;)ヾ(・д・ )ヨシヨシ
0520nobodyさん04/08/17 18:22ID:???
>>519
エラーメッセージを理解できない部下を持った上司も慰めてやれよ
0521nobodyさん04/08/17 20:00ID:???
arrayをハッシュとして使っているのですが、キーを削除する方法がわかりません。
$hash = array('key1'=>10, 'key2'=>20);
array_delete_key('key1', $hash); ← こんな関数ないっすかね?
array_key_exists('key1', $hash); #=> false
0522nobodyさん04/08/17 20:01ID:???
>>521
unset
0523nobodyさん04/08/17 20:01ID:???
>>517
英語くらい訳してみろよ
アパッチのモナカがすでに開始してるって書いてあるじゃん
0524nobodyさん04/08/17 20:33ID:???
>>522
unset($hash['key1']);
でいけました。
そうか、$hash['key1'] 自体がひとつの変数ということか。
どうもありがとうございました。
0525nobodyさん04/08/17 21:24ID:hQEO8cuE
PHPの4.0.3を入れてるサーバがあって
バージョンアップ不可の条件をいただいたのですが
4.0.3のマニュアルのURLご存じの方いたら教えて下さい。
ググったら「最低4.0.6まで上げる事をお薦めします.」とか書かれてて(´・ω・`)
0526nobodyさん04/08/17 21:56ID:???
>>525
普通にその辺のマニュアル使える。
例えば 4.3.0 から入った関数の場合、マニュアルに記載がある。

逆にマイナーバージョン固有のバグとかの場合はマニュアルには載らない。
前後の ChangeLog を地道に追う。

後はエラい人、補足よろ。
0527nobodyさん04/08/17 22:03ID:???
PHPで改行の数を調べるにはどうやって調べるのですか?
052852704/08/17 22:11ID:???
解決しますたw
0529nobodyさん04/08/17 22:28ID:???
>>517
ML に投げようかとも思ったけど、Google に残るのがイヤなのでこっちで。

取り敢えずコンピュータの管理はコントロールパネルからな。
それくらいググれ。

取り敢えず集中砲火浴びる前にここ読んで ML って何なのか掴んだ方がいい。
http://www.hyuki.com/writing/techask.html

で、分からない事全部が勉強だと思って調べまくる。それが当たり前に出来ないとこの仕事辛い。
特に知識系産業は国際間の壁が低く世界的に集約/役割が割れていくからどんどん寒くなる。
技能職って事で目の前の待遇の良さだけを見てるなら考えた方がいい。

それにプロって事は、責任だって相応。
俺は無関係だが、規模のデカい開発投資がプログラムで失敗して営業から展開から全部狂って悲惨な目にあったのを知ってる。
まぁその会社のマネジメントも悪いんだが、俺はたまたま開発担当を別件で知っていてコードもちょっと見た。
一番タチ悪いのはソイツが能力低すぎて、何が悪いのかさえ分かってないって事だ。

ML で何か言ってるが、顧客から見れば 俺初心者なんで とか明後日方向の事情は言い訳にもならない。
甘え捨ててもっと自助努力しる。
0530nobodyさん04/08/17 22:43ID:LR9RAB4Q
PHPからoggをエンコードしてタグを書きたいのですが、
shell_exec('oggenc ファイル.wav -t "タイトル" -a "アーティスト名" > /dev/null &');
のようにすると日本語が######のように化けてしまいます。
(実際はshell_exec()の中身は.shファイルに書いてあってもう少し長いですが、上のように書いても同じ症状でした。)
何か良い方法は無いでしょうか?
環境はLinuxです。
0531nobodyさん04/08/17 22:53ID:???
>>530
oggencは使ったことないけどスクリプトの書かれている文字コードとかを
もちっと検討してみてはどうだろうか
0532nobodyさん04/08/17 23:08ID:???
>>530
Ogg 扱える PHP アプリケーションどこかで見たな、と思って PHP ogg でググってみると
コードいろいろ出てきた。
英語ね。
053353204/08/17 23:09ID:???
補足、
それで他の原因潰しつつ >>531 の言うように文字コード関連にかかってみては、って意味
053453004/08/17 23:20ID:???
LinuxはEUC-JPですよね?
スクリプトも全てEUC-JPで書いたのですが・・・。
試しにXウインドウから.shファイルを動かしてみたらちゃんと日本語になりました。
Xウインドウ無しだと日本語使えないのかと思って、
shell_exec('mkdir フォルダ');
みたいにすると日本語のフォルダ作ってくれたので、
Xウインドウ無しでも使えるみたいですし。

>532
英語ですか・・・。
苦手ですけど一応調べてみます。
0535nobodyさん04/08/17 23:32ID:???
>>534
例えば Fedora は UTF-8 がデフォです。それに PHP の設定や Ogg のエンコード環境は別ではないかと。

あとまぁ英語出来ないと一定以上の事出来ないので。
Ogg とか人があまりやってない事をやろうとすると特に。
053653004/08/17 23:42ID:???
Linux+PHP+ogg+日本語ってのは特殊すぎますか・・・orz
0537nobodyさん04/08/18 00:13ID:???
個人的には好きです。頑張ってください。

# mp3 の ID タグ? 編集ライブラリとかも見たことあるので海外探せば ogg も転がってるかも
# で、それに日本語関連の修正&メモ書き入れて weblog か wiki にでも押し込んでおけば皆幸せ (・∀・)

って無責任に言うだけもな〜 と思ってググってると PEAR で見つけました。
http://pear.php.net/package/File_Ogg
0538nobodyさん04/08/18 00:44ID:???
>>530
タグはUTF8で書き込まないとダメだろ
0539nobodyさん04/08/18 00:50ID:???
>>534
つか、PHP-usersでも最近出てたと思うが、
"PHPがshell関数で動かす環境の"言語等の設定がそもそも何なのよ。
keyword:LANG
0540nobodyさん04/08/18 11:56ID:x3r+WkyO
こんにちはー
最近お世話になりっぱなしですが、よろしくです。

セーフモードがオンのサーバーで
Warning: mkdir(): SAFE MODE Restriction in effect
となってしまうのですが、
オンのサーバーでもディレクトリーを使う方法?
はないでしょうか?

もしくは、無理なのでしょうか?
よろしくお願いします。
0541nobodyさん04/08/18 12:15ID:???
>>540
マニュアル嫁。
それ以外にも色々と制限出るからきっちり目を通しておいた方がいい。
0542nobodyさん04/08/18 12:36ID:???
>>541
うぉーありがと。
ってことはやっぱり代わりに使えるものがあるってことですね?
マニュアル声出して読んでみますw

「セーフモードにより制限を受けるか無効となる関数」
ってページあってそこを見ると自分の使ってる関数が沢山でてて・・・
いやになるw

ありがとさんでした!
0543nobodyさん04/08/18 12:42ID:???
いや… 嫁よ。
マニュアルの使い方を覚えるだけで、PHP は 256 倍楽になるのに。
不用な本買わなくてもいいからお財布にも地球にも優しい。

> mkdir() 処理を行うディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。
0544nobodyさん04/08/18 12:48ID:???
>>543
なるほどw
UIDってなんですか?
0545軟式PHP04/08/18 12:54ID:???
vodafoneの端末固定IDです。
0546軟式PHP04/08/18 12:55ID:???
あと、Docomoも。・゚・(ノ∀`)・゚・。
0547軟式PHP04/08/18 13:08ID:???
○| ̄|_ スンマセン
0548541=54304/08/18 14:30ID:???
付き合いきれねぇよ ヽ(´ー`)ノ 俺知らね
0549nobodyさん04/08/18 15:06ID:???
wwwww
0550軟式PHP04/08/18 15:29ID:???
「なるほどw」ってところがポイントだな。
0551nobodyさん04/08/18 15:33ID:???
プロ釣師
0552nobodyさん04/08/18 15:58ID:???
Cannot modify header information - headers already sent by (output started at /usr/home/free/home/market/public_html/mmorpg/index.php:4)
ってなんだよウワァァァァン
0553軟式PHP04/08/18 16:17ID:???
>>552
今すぐCTRL+Fを押して「modify」と入れて検索してみるといいよ。
0554nobodyさん04/08/18 16:17ID:???
>>552
そのエラーメッセージを訳したらどうなる
ちゃんと英語を読め
055555204/08/18 16:23ID:???
ヘッダー情報を修正することができません。
0556軟式PHP04/08/18 16:32ID:???
>>555
      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 ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
055755204/08/18 16:37ID:???
スマン、サパーリだ_| ̄|○
0558nobodyさん04/08/18 16:38ID:???
ヘッダーは既に (・・・・・・) で 送信されている。
0559nobodyさん04/08/18 16:39ID:???
頼むから読んでくれ.辞書の引き方くらい中学校で習っただろ.
> headers already sent
056055204/08/18 16:40ID:???
・・・つまりヘッダーは1個しか無理ぽ系?
0561nobodyさん04/08/18 16:40ID:???
header() とか setcookie() とか の前に
echo とか print とかしてると 起こりやすいね。
056255204/08/18 16:42ID:???
printもechoもないぽ
<?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:???
>>562
> Cannot modify header information
の前に何かエラーか警告が出力されてないか
<?php の前に改行や空白がないか
056456204/08/18 16:50ID:???
エラーはこれ一つだけです
空白もナイポ
0565nobodyさん04/08/18 16:54ID:???
ぽ$って
マジきもいんだけど
0566nobodyさん04/08/18 16:57ID:???
locationのhttp:が全角なんだけどこれは意図的にやってるんだよね
それからエラーの出ている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の行を削除した時に、全く何も画面出力されていないことが必要だぞよ
0568nobodyさん04/08/18 17:16ID:???
>>562
$mynews = 'page/〜/data.cgi';
なんでデータファイルがcgiなのかと子一時間
0569nobodyさん04/08/18 17:27ID:???
>>568
何がおかしいのか小一時間
0570nobodyさん04/08/18 17:37ID:???
わざわざデータファイルを実行系ファイルの拡張子にする時点でオ�hル
0571nobodyさん04/08/18 17:41ID:???
>>570
無償のレンタル鯖でアクセス制限が掛けられない時、
データファイルの拡張子をcgiにしておけば、URL直打ちでも
データファイルを覗かれないという利点がありますけど。
0572nobodyさん04/08/18 17:43ID:???
データファイルの拡張子を.cgiにしておけばそのファイルにアクセスされても
500がでて見れないようにしているんだと思う
# 自分だったらそんな変なことしないで.htaccessによるアクセス制限するが
0573nobodyさん04/08/18 17:44ID:???
>>568
( ゚∀゚)アハハ八八ノヽノヽノ \ / \
0574軟式PHP04/08/18 18:40ID:???
>>568
(つω;)ヾ(・д・ )ヨシヨシ
0575nobodyさん04/08/18 19:03ID:???
拡張子の話はどっかのスレで
さんざんやってたような希ガス
0576nobodyさん04/08/18 19:05ID:QMhJW4BU
拡張子なんて飾りですよ。偉い人にはそれがわからんのです。
0577nobodyさん04/08/18 20:07ID:???
*.gifをphpでパースするようにサーバを設定してみますた
0578nobodyさん04/08/18 20:31ID:???
チンコって反ってる方が強そうだよな?
057957804/08/18 20:32ID:???
スマン、誤爆だ
0580nobodyさん04/08/18 21:10ID:???
>577
すげー。このサイト全部 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:???
>>577
jsp にしたら多少リソース喰っても許される
aspx にしたら客が他に移管するって言い出さなくなるし単価も上がり、初期投資も色乗せれる
cgi にしたら単価下がるけど杜撰な運用でデータ漏れても泣き寝入り度上がる
php にしたら 普通じゃーん と思われつつ、人員の技能レベルとセキュリティホールやバグを執拗に心配される

まぁどれを選ぶかはおまい次第だ。


# .html を被せて運用してるところはマジであるよね。運用情報隠して被いたずら/クラッキング率を下げる
0584nobodyさん04/08/18 23:14ID:???
初耳だな
0585nobodyさん04/08/18 23:20ID:???
>>581
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 が出てくるってのなら、
$ はエンティティにでもしておくのが妥当だと思われ。
0589nobodyさん04/08/18 23:33ID:???
>>587
Σ( ̄∇ ̄ !!
059053004/08/19 01:08ID:???
あれから文字コード変えてみたりphp.ini弄ってみたりと色々やってみたのですが、
シェルからphp hoge.phpとしてphpを呼び出すとちゃんと日本語にしてくれて、
apacheから呼ぶと駄目みたいです。
どっちも同じユーザーでやってみたので権限の問題でもないようですが、
もうさっぱりです。
どなたかご教授願います。m(_ _)m

>>539
PHPがshell関数で動かす環境の言語とは何処を設定すれば良いですか?
PHP-usersも検索してみましたが探し当てられず・・・。
0591nobodyさん04/08/19 01:37ID:???
>>590
shell_exec('touch 日本語のファイル名.txt');
としてapacheとシェルから実行したらどうなるかやってみてよ
059253004/08/19 01:54ID:???
>>591
mkdirでも出来たので予想はしてましたけど、
apacheとシェルどちらもEUC-JPで日本語名のファイル作ってくれました。
EUC-JPで.shファイル作ってやっても出来たので、oggencの引数はEUC-JPで良いみたいですし。
何が悪いのでしょう?
0593nobodyさん04/08/19 02:00ID:???
それでoggencの引数にUTFで値を渡したときはやってみたの?
059453004/08/19 02:11ID:???
>>593
やりました。
apacheからやった場合は文字コードの1バイトが#に置き換わって表示されます。
シェルからやった場合は#と?で出てきます。
どちらも英字の部分は普通に表示されています。
059558104/08/19 02:15ID:???
>>585
どうもありがとう。
背景をちょっと説明すると、PHPスクリプトの中にPHPスクリプトを書く必要があって、
それをヒアドキュメントで書いています。
$code = <<<EOS
#PHPスクリプトをここにかく
<?php echo \$x ; ?>
EOS
それで、Cut&Pasteで貼り付けてるんだけど、そのあとに¥でエスケープするのが
面倒だったので質問しました。
\n なんかも \\n としなきゃいけないんで、結構面倒なんですよ。
まあ頑張ってちまちま直します。

>>587
どういう意味?
0596nobodyさん04/08/19 02:31ID:???
>>587
どういう意味?

エラー制御演算子 でぐぐれ
0597nobodyさん04/08/19 04:37ID:???
>>595
俺ならテンプレート使って終わり。
っていうか

?>
好き勝手書けや (#゚Д゚)オラー!
<?php
0598nobodyさん04/08/19 09:23ID:???
まずヒアドキュメント使う必要があるのかと
0599もん吉04/08/19 10:35ID:???
現在PHPとMySQLを使って検索システムを作ってるんですけど
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に"ほげ"を追加するため
先に$hoge = ""; としておかないと追加する場所がなく
エラーが出るのだと思います。
$hoge = "ほげ";だと問題ないですよ。
0602nobodyさん04/08/19 11:07ID:???
ケータイ用のサイト(Shift_JIS出力)の人でPostgreSQL+PHPで運用している方が
いれば教えてホシイのですが、どういう手段で文字コード変換やってますか?

jcode.phpとかだと半角カナをうまく使えないですし、
かといってレンサバなのでphp.iniをいじくったりモジュール追加できないので悩んでいます。
0603nobodyさん04/08/19 11:16ID:???
includeでCGIを挿入できたっけ?
060460204/08/19 11:22ID:???
>>603
よく読んでみてください
jcode.cgiじゃなくてjcode.phpですよ
0605nobodyさん04/08/19 11:26ID:???
includeって拡張子は何でも良いのでは?
0606nobodyさん04/08/19 11:43ID:???
includeでCGIを呼び出そうとしたらCGIの中身が出てきますた
0607nobodyさん04/08/19 11:43ID:???
>>602
jcode.phpって半角カナで何か不具合あるの?
0608nobodyさん04/08/19 12:02ID:???
Shift_JISはあちこちでマルチバイト対応に迫られるね
そもそもjcode.phpって必要
0609nobodyさん04/08/19 12:03ID:???
$2ch['php']['1091774679']['body'] .= '?';
0610nobodyさん04/08/19 12:26ID:???
Warning: rewind(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 19
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:???
parse error, unexpected T_STRING, expecting T_CASE or T_DEFAULT or '}'
とはどういう意味でしょうか?
0612nobodyさん04/08/19 13:10ID:???
>>610
セーフモードは色々と制限があるからね

>>611
見ての通り → '}'
0613Imo ◆.jC7ANgFY. 04/08/19 13:23ID:???
>>611
文法エラー
文法上の誤りがあります。
本来、case(T_CASE)またはdefault(T_DEFAULT)または}であるべき
ところが文字列(T_STRING)になっています。

■ このスレッドは過去ログ倉庫に格納されています