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

【PHP】質問スレッド Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/02 15:32ID:f3afNVBG
レスは気長に待つのが良い感じかも。


<<参考>>

■本家
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を見よう。
0011名無しさん@Emacs02/06/03 12:48ID:3U+9Jvdz
test
0012RASCAL02/06/03 23:18ID:Ty02FZkQ
はじめまして、PHP初心者のものです。
只今、ファイルのアップロードを試みてるのですが、

Fatal error: Failed opening required 'jcode.phps'
(include_path='.:/usr/local/lib/php')
in /home/design/public_html/doc2/upload.php on line 12
とでてしまいます。
<table border="1" width="350">
<tr>
<th>FILE NAME</th><th>SIZE</th><th>MIME TYPE</th>
</tr>
<?php
require_once("jcode.phps"); //この部分が12行目に当たる部分です。
$num=0;
for($i=0; $i<sizeof($fl); $i++){
if($fl[$i]=="none"){
continue;
}
if(file_exists("./doc/".jcodeconvert($fl_name[$i],0,2))==TRUE && $frb=="true"){
$num++;
}elseif(!is_uploaded_file($fl[$i])){
$num++;
}else{
?>
<tr>
<td align="right"><?php print(jcodeconvert($fl_name[$i],0,2)); ?>
</td>
<td align="right"><?php print($fl_size[$i]); ?>BYTE</td>
<td align="right"><?php print($fl_type[$i]); ?></td>
</tr>
<?php
move_uploaded_file($fl[$i],"./doc/".jcodeconvert($fl_name[$i],0,2));
}
}
if($num>0){
print("<div style='color:red'>".$num."件がアップロードに失敗しました。</div>");
}
?>
どうしたらいいのでしょうか、よろしくお願いします。
0013nobodyさん02/06/04 00:14ID:???
>>12
jcode.phpsは入ってるんだよね?念のため。
「何それ?わからない」ということなら、恐らく入ってないです。
検索してください。
0014nobodyさん02/06/04 00:15ID:nDLL3eGN
>>12 日本語メッセージ
「要求されたファイル'jcode.phps'を
開くことができません。」
upload.phpと同じディレクトリに
jcode.phpsは有りますか?
そもそもなぜソースを読み込むのですか?

>>10 php.ini
; Name of the session (used as cookie name).
session.name = PHPSESSID

>>9 php.iniのregister_globals はどうなってますか?

>>6
http://www.php.net/manual/ja/function.readdir.php
ファイル名は 特定の順序で返されるわけではありません。
readdirではダメっぽいね。
0015nobodyさん02/06/04 00:18ID:???
>>8 >>6
そっか単純ソートすればいいのか。
スマソ。他も怪しいかも。
0016nobodyさん02/06/04 10:59ID:???
PHPにCのfprintfのような関数はありますか?
なさそうなので、fwrite($fp,sprintf($format,...))とやっているのですが。
0017nobodyさん02/06/04 14:58ID:???
求人が全然ないんですが、皆さんは何の仕事してるの?
0018nobodyさん02/06/04 16:30ID:???
>>17
どこに住んでるのかにもよるけど、
http://www.find-job.net/ 逝って探したら?
0019nobodyさん02/06/05 00:22ID:u1mPAxGZ
共用なんで4.1.2のままです。
セキュリティが気になってregister_globalsをoffにしたいのですが、勝手にすることもできないので、
とりあえずスクリプト内の記述で対応することできますか?

できなかったらどうすればいいんでしょう。。。
0020nobodyさん02/06/05 00:28ID:8T+VUhRr
>>19
変数の扱いに気をつければいいんじゃないの?
必ず自分で初期化する、みたいな。
たとえば

$hoge = $_GET("hoge");

とか最初にやっちゃうの。
00211902/06/05 00:35ID:u1mPAxGZ
>>20
ありがとうございます。
ってことは例えばファイルを読み込んで、if (~略~) $admin = 'yes';とかする場合には、
必ずelse $admin = '';とか書かなきゃいけないんですね。なんか面倒だし抜けありそうだし。。。
んー、自分のとこだけ実行時はデフォルトでoffとかできればいいのに。
0022nobodyさん02/06/05 15:21ID:q2nPzAuV
PHP4.2.0でPHPlib7.2をインストールし
各種設定を行い、pages/index.phpの表示まではできました。
ユーザを追加するために、pages/admin/new_user.phpにアクセスし、
login画面(Test for Login)に
Username:kris Passwprd:test
と打ち込んで、loginしようと試みたのですが、
再度login画面(Test for Login)に戻ってしまいます。
(ユーザを追加する画面にはならないです)
どうすれば、ユーザ追加のページにいけるのでしょうか?
0023名無しさん02/06/05 15:21ID:???
.htaccess
00242202/06/05 15:35ID:q2nPzAuV
>>23さん
resありがとうございます。
.htaccessにどの様な内容を書けばいいんでしょうか?
以下のように書いたんですが・・・
00252202/06/05 15:37ID:q2nPzAuV
以下のようには書けてませんです。すいません。
00262302/06/05 15:46ID:???
>>24
ごめん。
>>23>>19宛てに書いた。
00272202/06/05 15:58ID:???
>>23さん
了解です(苦笑)
0028キム02/06/05 19:03ID:sjTX0T+w
PHPでfopen("test.txt","w" );
でファイルを作成し書き込みを行ないたいのですが
パーミッションが無く書き込みエラーになるようです。
test.txtをあらかじめ作成しchmodコマンドを実行すれば
書き込みは出来るのですが
PHPから作成し書き込みを行ないたい場合、どのようにすればよいのでしょうか?
教えてください。
よろしくお願いします。
00291902/06/05 21:16ID:JGd9rG/R
>>23
すいません、調べてみましたが全く見当もつきません。
ヒントになるページだけでも教えていただけないでしょうか。
0030htaccessについて02/06/05 21:27ID:???
本当に調べたのか、小一時間問い詰めたい。
http://www.google.co.jp/search?hl=ja&q=.htaccess&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0031nobodyさん02/06/05 21:47ID:???
>>29
マニュアル嫁
http://www.php.net/manual/ja/configuration.php
00321902/06/05 22:02ID:JGd9rG/R
いや確かに本家のマニュアル読めば一発でした。。
ただうちの共用サーバーはhtaccessじゃ設定できなくしてあるっぽいです。
うーん。。
0033nobodyさん02/06/05 22:39ID:Bl/EL1d3
>>19
じゃあ
>>20さんのおっしゃるように、まずは自分で気をつけては?
初期化しない変数を使わなきゃいいだけな気が。

>>28
ディレクトリのパーミッションは707でしょうか?
0034nobodyさん02/06/06 00:52ID:???
>>33
いえ、777です。
0035nobodyさん02/06/06 01:08ID:hbHT1ZtS
カウンタ、BBS、簡易なページ自動生成スクリプトを
作ることを目標としてPHPをはじめたところなんですが、
flockに関して質問があります

理屈で言えばすべてのプロセスがflockを使用していれば
排他制御は正しく行われるはずですが、ネット上でのCGI講座などで、
Parlの場合はファイルのロックにはロックファイルを置く方法をよく見かけます。
PHPの場合だとflockを積極的に利用しているように見受けられました。

とするとPHPでのflockの信頼性は、Parlのより高いと勝手に想像してるのですが
実際のところはどうなんでしょうか?
抽象的な質問で申し訳ないですが、私見でも構いませんので
どなたかレスお願いします。
0036nobodyさん02/06/06 01:28ID:???
ぁぅぁぅぉー

http://pc.2ch.net/test/read.cgi/php/997199513/l50
0037nobodyさん02/06/06 01:42ID:???
>35
まず、Parlとは何かを小一時間ほど問い詰めたい。
その後、flockとは何かを小一時間ほど調べてみることをおすすめする。
00383502/06/06 02:53ID:???
>>36
ざっと目を通しました
色々参考になりました
ありがとうございます

>>37
失礼しました、Peal、綴り間違いです

POSIX準拠のflockが動作しているのなら
PealもPHPも、ロックをすり抜けられる可能性は
同じだということでしょうか。

私、勘違い&見当違いですかね…
とりあえずもっと勉強してから出直します
ありがとうございました
0039nobodyさん02/06/06 03:57ID:???
> Peal

(´д⊂
0040nobodyさん02/06/06 06:33ID:???
すいません、PHPのクラスについて教えて下さい。

 今個別データベース非依存のデータベース操作APIを作っているんですが、
基底クラスもどきを作り、いざ継承という段階で躓いてしまいました。
 質問は親クラスのプロパティ(クラス変数)をダイレクトに取得する方法が
ないか?ということです。
 ものの本では、var定義されている変数はスコープ内(=すなわちクラス内)
でしか通用しないし、そもそもPHPは関数であり、クラスによる設計はあくま
でもオプション程度のものと書いてあり、実際にparent::やhoge::とか、
試してみましたがだめでした。
 それではと思って、親クラスに親クラス自信のプロパティを取得し、連想配列
で戻り値を返すメソッドを作り、それを子クラスで参照する方法もやってみた
のですが、値が(=連想配列の値の部分)NULLで返ってきます。

 何か見落としている点とかやはりあるんでしょうか?教えて下さい。
(環境:Win98 + An HTTPd + PHP ver4.1.2)
0041名無しさん02/06/06 09:23ID:???
毎回ちゃんとflockするようにすれば大丈夫じゃないの?
まあ、作法を守らないプログラムが他にあれば問題だけど。
0042nobodyさん02/06/06 12:51ID:???
PerlもPHPもflockはUNIXのflockシステムコールを使っているだけじゃないの?
0043nobodyさん02/06/06 13:06ID:???
NTサーバでもflockできますが・・・
0044名無しさん02/06/06 14:26ID:???
POSIXのflockが正しいのかな?
0045nobodyさん02/06/06 15:34ID:???
WindowsでPHP ( ´,_ゝ`)プッ
0046nobodyさん02/06/06 21:10ID:???
>>45
何か?
0047キム02/06/06 21:48ID:HEq09nZx
ファイルが入っているディレクトリを
707でパーミッションの設定をしたら
ファイルを作成する事が出来ました。
しかし、そのファイルにはパーミッションがないので
書き込む事が出来ません。
どしたらよいのでしょうか???
0048nobodyさん02/06/06 22:25ID:???
>>47
>パーミッションがない
(゚Д゚)ハァ?

PHPとの関連は?
0049nobodyさん02/06/06 22:46ID:auwDQifb
いままで動いていた index.php を CGI として動かしたいのですが、
先頭に #!/usr/bin/php4 という行を追加して index.cgi という名前にして実行属性をつけるだけではダメなのでしょうか?

エラー 500 (Internal Server Error) が出てしまいます。

Debian GNU/Linux 3.0 (x86) + Apache です。
0050 ◆AngelBlk 02/06/06 22:57ID:???
>49
もの凄い勢いで質問なんですが
PHPのCGI版をインストールしてありますか・・・。

/usr/bin/php4が存在しないとか言ったら
大笑いですよ・・・。
0051nobodyさん02/06/06 23:00ID:auwDQifb
>50 which php4 ではでてくるのと、./index.cgi を実行するとちゃんとレスポンスヘッダと HTML 本体が出力されるのは確認してるんですが、なぜか Apache 経由で CGI として実行するとエラーログに Premature end of script headers と出力されるんです…

もうちょっと調べてみます。
0052 ◆AngelBlk 02/06/06 23:12ID:???
>51
流石にインストールしてないなんて事無いですか(苦笑。
んー、じゃあ可能性だけど。
index.cgiの文字コード/改行コードは?


//というか、php4なんて名前で入るのか・・・。
//php4.1.2の時にCGI版入れた時
//バイナリファイルの名前phpだったけど変わったのかな。
0053nobodyさん02/06/06 23:44ID:zHub/sfn
「php4 徹底攻略」 のPDFから ex4 (p144-p149まで) をコピペしてサーバーにアップし、
ブラウザから参照すると、必ずpgconnect.iniの中身が表示され、一番下に
Fatal error: Class mypgselect: Cannot inherit from undefined class pgselect in /usr/home/takeshi04/public_html/ex4.php on line 11
となり動作しません。

同じような現象起きた人いますか? もしくはどのような対処法がありますでしょうか?

ちなみにex1〜ex3まではうまく動作しました。
0054nobodyさん02/06/07 00:30ID:???
タケシーーー
0055nobodyさん02/06/07 00:36ID:???
呼んだ?
0056nobodyさん02/06/07 00:55ID:???
echo "$yonde-naiyo!";
0057nobodyさん02/06/07 01:53ID:kC35ouJd
$month = (isset($month)) ? $month : date("n",time());

これはどういうことを意味するのでしょうか?
0058nobodyさん02/06/07 02:43ID:???
あなたにはマニュアルを読むことをお勧めします。
キーワードは「isset関数」「三項演算子」「date関数」です。
ガンバレ
0059nobodyさん02/06/07 03:48ID:???
>>58さん

三項演算子と言うのですね。
マニュアル読んでみましたが、
if 文で書き換えると↓のような感じということでしょうか?

if(isset($month)) {
$month = $month;
} else {
$month = date("n",time());
}
006057 = 5902/06/07 03:49ID:???
あっ、、、57 = 59です。
0061nobodyさん02/06/07 05:32ID:FyQSs3TI
やっぱこれからはセッション管理をなるだけ使わない方向になっちゃうんですか?
0062nobodyさん02/06/07 10:35ID:???
>>61
なぜ?

漏れはこれから使おうと思っていたのに(w
0063nobodyさん02/06/07 10:48ID:lJP0VltF
PHP にも、Java でいうところの JDBC や Perl, Ruby の DBI みたいな
データベースに依存しない、使いやすいデータベース利用のための
ライブラリは存在するのでしょうか。
00643302/06/07 11:02ID:???
>63
PEARのDBクラスじゃ駄目なのですか?
0065nobodyさん02/06/07 11:47ID:RmSLRVAQ
PEAR(・∀・)???
0066 ◆AngelBlk 02/06/07 11:53ID:???
>65
http://pear.php.net/
これ。
後からDB変えた時とか、ほとんどコードの変更いらなくて便利。
0067 ◆AngelBlk 02/06/07 11:54ID:???
補足。
ttp://www.avantexchange.com/php/pear_tut.php

後はこことか参考にするといいと思うよ。
0068ジー子02/06/07 16:02ID:mUQr0G4t
$array = array("A"=>"aデス","B"=>"bデス。");
という配列の中身を、
一関数で全て出力するという関数って何でしたっけ。
おしえてくだsちい。
0069 ◆AngelBlk 02/06/07 16:32ID:???
>68
http://www.php.net/manual/ja/function.array.php
http://www.php.net/manual/ja/function.print-r.php
このくらい自分で調べようよ・・・。
公式マニュアルの配列の所にそのまま書いてあるんだしさ。
0070ジー子02/06/07 16:51ID:mUQr0G4t
>>68
print_r()じゃねえの?
百済ねえ質問し点者ね絵よ。
0071nobodyさん02/06/07 17:12ID:???
>>70
くだらねえ誤字してんじゃねえよ。
0072nobodyさん02/06/08 03:28ID:u5/r5db4
正規表現で最短マッチするにはどうすればいいのですか?
0073nobodyさん02/06/08 05:59ID:???
PHP のマニュアルを勝手に自分のサーバにおいて
誰でも閲覧できる状態にしても構いませんか?
0074nobodyさん02/06/08 13:53ID:???
>>72-73
タイーホ
0075nobodyさん02/06/08 15:12ID:???
>>74
おまえもまとめてタイーホダ-
0076nobodyさん02/06/08 17:25ID:VO8Wct1A
すいません。質問させてください。
http://php3.de/manual/ja/function.each.php
each って、
$bar[0] == $bar[key] で、 $bar[1] == $bar[value] のよーなのですけど、
同じ値なのだったらkey,valueか、0,1かの
どっちかのペアだけでいいと思うんだけど。
4つある意味はなんで?
0077nobodyさん02/06/08 22:27ID:???
$bar["key"]や$bar["value"]でキーと値を連想配列として使うのと、
list($key,$value)=each($bar);
で通常の配列として使うこともできるからでは?
0078nobodyさん02/06/09 00:39ID:QolOb+V5
質問なんですが。
ネットにアップロードされているファイルをfopenの読み込みモードで読み込んで、それをprintで出力しようとしても
Resource id #1と出ます。

これはどういう意味なんでしょうか?
0079nobodyさん02/06/09 00:58ID:???
…ひょっとして
$fp=foepn("http://****","r");
echo $fp;

とかやってないですか?(汗)
接続IDです。>Resource id #1
00807902/06/09 00:59ID:???
自己レス
>$fp=foepn("http://****","r");

foepnって…(恥
fopenですスイマセン。
0081nobodyさん02/06/09 01:14ID:???
>>79-80さん
・・やってます・・・・
どういう書き方をすればいいんでしょうか?

それと、差し支えなければ接続IDというのも教えて頂きたいのですが・・・。
00827902/06/09 01:31ID:???
マニュアル読みましょ…。
普通にファイルを開くのと同じようにできますよ。
キーワード:ファイルハンドル fopen fread(fgets)
などなど。
fgetsやfreadの例を見た方がわかりやすいかもです。
http://www.php.net/manual/ja/ref.filesystem.php
00837602/06/09 01:34ID:A3vcjjB5
>>77
>list($key,$value)=each($bar);
これって、
$key=key($bar);
$value=current($bar);
next($bar);
と同じことですよね。
となると、listで簡略化できるから、ってことで納得しますです。
ありがとうでしたー。

>>78
レッツphpのチュートリアルにあるやつはどう?
ttp://php.s3.to/tt/tt6.php
00847802/06/09 01:41ID:QolOb+V5
>>82
すいません、よく読んでおいたつもりなんですが・・・出直してきます

>>83
熟読してきます。ありがとうございました。
0085nobodyさん02/06/09 07:06ID:???
何行かある文字列から、
[begin] と [end] に挟まれた部分を
取り出すにはどうすれば良いでしょうか?

-----------------------
あああああ
いいいいいいいいい
[begin]ほげほげ[end]
ううう
ええええええ
おお
-----------------------

だとしたら、「ほげほげ」を取り出したいのです。
分かりにくくてすみません。
0086nobodyさん02/06/09 08:26ID:???
>>85
strpos + substr使うなり正規表現使うなりご自由にどうぞ。
0087nobodyさん02/06/09 13:27ID:A3vcjjB5
PerlからPHPに変えるソフトってない?
JavaからC#に変換してくれるみたいなやつ。
0088nobodyさん02/06/09 14:48ID:???
まだまだ駆け出しなんですが、気になったので質問します。
可変変数ってどういう使い方があるんですか?
0089nobodyさん02/06/09 16:12ID:???
>>85
変数に全行を代入する
[begin]で区切る
[end]で区切る
0090nobodyさん02/06/10 18:53ID:WsKMKNfu
php4.2.1にバージョンアップしたら、フォームからメールを送ることができなくなってしまったのですが、どこをどのようにいじったら直りますか?
初心者なのでよろしくお願いします
0091名無しさん02/06/10 21:21ID:???
>>90
phpのバージョンを元に戻してください。
0092nobodyさん02/06/10 21:45ID:WsKMKNfu
>>90
ひ〜っ。
その方法しかないでしょうか、、、。

できれば、emacsとか使うことはできるので、設定ファイルのいじり方とかを教えていただきたいのですが、、、、。
0093nobodyさん02/06/10 21:45ID:WsKMKNfu
>>91でした。
間違えました。
0094戊寅02/06/10 22:47ID:???
>>90
php.ini の register_globals = を on に設定してみてokならば、
http://www.php.net/manual/ja/security.registerglobals.php
を参考にスクリプトを修正する。

sendmail_path = が適切に設定されているか否かを確認。

この2つくらいしか思いつかないっす。

前のバージョンはいくつか? 環境は? スクリプトの具体例は?
などを書くと、識者がアドバイスしてくれると思うです。
0095nobodyさん02/06/11 00:08ID:fQRftcxO
header("Location: http://hoge");
を使うと鯖負担大なの?

既出でしたらすみません。
0096nobodyさん02/06/11 01:40ID:???
>>95
へ?なんで?
00979502/06/11 02:02ID:fQRftcxO
>>96
以前Perlで
print "Location: http://hoge\n\n";exit;
だけのCGI(URL転送のみ)を使ってたら、レンタル鯖屋さんに
高負担かかってますと怒られた事と、

最近PHPで一日7万弱アクセスのページに
header("Location: http://hoge");
これ使ったら、鯖負担がかなり高くなったから…
まぁ、ほかのPHP処理で高くなったのかもしれないけど、
かなり低負担重視で作ったから、あとはコレかな?と…
0098nobodyさん02/06/11 03:57ID:???
>>97
URL転送のみってのが嫌がられたんじゃないの?
print "Location: http://hoge\n\n";exit;は文字列を表示して終了するだけだし。
0099nobodyさん02/06/11 04:10ID:fQRftcxO
>>98
TOPコマンドで高負荷確認済み

>文字列を表示して終了するだけだし
(゚Д゚)?
0100nobodyさん02/06/11 04:19ID:???
>>99
あんたまさかLocationをPerlが理解すると思っているのか?
URL転送ということは他サイトに飛ばしていたんだろ?
010110002/06/11 04:22ID:???
s/Perlが/PerlやWebサーバーソフトが/
0102nobodyさん02/06/11 08:53ID:???
>>99
RFC2616読んで、出直してこい。

>>90
とりあえず引数をハードコーディングした場合、mail関数は成功するか?
以下のスクリプトで成功するなら、メール送信そのものは動いてる。
その場合はmail関数の引数をチェキしる。

<?php
mail( "hoge@example.com", "Test", "Test" ); //メールアドレスは自分のアドレスに入れ替えれ
?>
0103nobodyさん02/06/11 09:30ID:yLQsThBf
http://www.php.gr.jp
つながんないです。
松下ナントカの圧力でしょうか?
0104nobodyさん02/06/11 14:32ID:g7ykEoe9
>>94,102
返答ありがとうございました。
これからがんばってみます
0105nobodyさん02/06/12 08:39ID:???
class 化すると、どういう良いことがあるのですか?
0106nobodyさん02/06/12 08:54ID:???
>>105
コードの再利用がしやすい。
0107nobodyさん02/06/12 12:14ID:???
オブジェクト指向が分からない〜♪
0108nobodyさん02/06/12 14:07ID:???
>>106
盗用?
0109nobodyさん02/06/12 14:26ID:???
>>108
?
0110nobodyさん02/06/12 16:40ID:???
ああ、携帯用サイトをセッション使ってつくってまった。。。鬱
■ このスレッドは過去ログ倉庫に格納されています