【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/10(木) 22:52:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
姉妹スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
0002nobodyさん
2009/09/10(木) 22:53:48ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0003nobodyさん
2009/09/10(木) 22:55:01ID:???0004nobodyさん
2009/09/10(木) 22:55:06ID:???http://pc11.2ch.net/test/read.cgi/php/1233590976/l50
0005nobodyさん
2009/09/10(木) 22:56:39ID:???0007nobodyさん
2009/09/10(木) 23:00:23ID:???0008nobodyさん
2009/09/10(木) 23:02:21ID:???ID出したくない理由ってなんだろうな
単にめんどいというならそういうやつには向いてないし門前払い審査には最適なんだがな
どうせテンプレもよんじゃいねえよ
0009nobodyさん
2009/09/10(木) 23:07:20ID:???0010前スレ 970
2009/09/10(木) 23:12:36ID:???0011nobodyさん
2009/09/10(木) 23:13:32ID:???0013nobodyさん
2009/09/10(木) 23:16:05ID:???0014nobodyさん
2009/09/10(木) 23:20:13ID:???0015前スレ 970
2009/09/10(木) 23:23:45ID:???すみません、別のことしているうちに次のスレが立っていたもので・・・
>>14
Loaded Configuration Fileの欄には(none)と書かれています
コレがまずいのでしょうか?
0016nobodyさん
2009/09/10(木) 23:34:00ID:???apacheのhttpd.confのPHPInDirで指定したパスに置かれたphp.iniが読み込まれます。
もう一度確認したほうが良いと思います。
以下回答者の愚痴です。
スレが立っていたから回答を無視するって何様?
999以前にも2回ほどphp.iniがロードされてないって言われてなかった?何を確認したの?
やることやってないってのは、「正しい修正をやってない」ということではなく「回答されたことをやってない」という意味だよ?
いい加減にしてほしい。
0017nobodyさん
2009/09/10(木) 23:36:03ID:???0019前スレ 970
2009/09/10(木) 23:47:34ID:???ありがとうございました
無事に解決しました!!
3時半から8時間かかりましたが、理由は>>16さんの教えてくれた、
>apacheのhttpd.confのPHPInDirで指定したパスに置かれたphp.iniが読み込まれます
この部分でした
『PHPを伝授する』スレの設定をそのまましていたもので、PHPIniDir "c:/php"が自分の設定では、PHPIniDir "c:/WINDOWS"でした
いやぁ、ほんと良かったです
>>16さんを含め、その他教えてくれた方々皆さんに本当に感謝します
ありがとうございました
今日中にはどうしても終わらせたくて、もし今日出来なかったら暫くふてくされてPHPから離れようと思っていたところでした
本当に皆さんありがとうございました
0020nobodyさん
2009/09/10(木) 23:50:31ID:???次からは改善してくれよ。
設定コピペとかは最高に馬鹿な行為だからね。身をもって実感できたかと。
0021前スレ 970
2009/09/10(木) 23:54:43ID:???いやぁ、マジでありがとうございました
自分の使ってる参考書にはPHPIniDirの記述が無くて、コレが何なのか分からないまま『PHPを伝授する』スレの通り設定していました
ほんと助かりました
非常に疲れましたが、良かったです
0022nobodyさん
2009/09/11(金) 09:00:57ID:???同じ日付の予約が出来ないように、予約フォームからPOSTされたときに
同じ日に予約が既にある場合は、新たな予約を受け付けないように処理していますが、
予約後にブラウザの戻るボタンでフォームに戻り、同じ日付で再度予約を入れると受け付けてしまいます。
こういう場合はどのように対処すればいいんでしょうか?
0023nobodyさん
2009/09/11(金) 09:03:29ID:???0024nobodyさん
2009/09/11(金) 10:02:25ID:???これがうまくいってない。
実行されるSQL文をvar_dumpなりで表示させて確認したほうがいい
0026nobodyさん
2009/09/11(金) 10:37:14ID:???0027nobodyさん
2009/09/11(金) 10:40:09ID:???0028nobodyさん
2009/09/11(金) 17:34:22ID:???処理の長い処理に、順次 printing... を出したくて
http://jp2.php.net/manual/ja/function.ob-flush.php#90529 などを参考に
function flush_buffers(){
ob_end_flush();
ob_flush();
flush();
ob_start();
}
for($i=0;$i<10;$i++){
flush_buffers();
echo 'printing...<br />';
usleep(300000);
}
としてみましたが、結局、全部まとめて出てしまいます。
何かアドバイスをいただけませんか。
0032nobodyさん
2009/09/11(金) 19:34:57ID:???0033nobodyさん
2009/09/12(土) 22:40:15ID:???class aaa{
public $b;
}
$c = new aaa;
$c->b=1;
print $c->b;
?>
----------------------------
オレ様が華麗にOOPに挑戦
0034nobodyさん
2009/09/12(土) 22:51:03ID:???()つけような
0035nobodyさん
2009/09/12(土) 22:56:05ID:???直接フィールド($b)を操作するのはよくないからアクセサを用意してください。
継承しないフィールドは基本的に全てprivateでOK。
<?php
class aaa {
private $b;
public function setB($value) {
$this->b = $value;
}
public function getB() {
return $this->b;
}
}
$c = new aaa();
$c->setB(1);
echo $c->getB();
?>
0036nobodyさん
2009/09/13(日) 17:37:11ID:???pdo.dsn.samples="sqlite:C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\samples.sqlite"
と書き加えろと参考書に書かれているのですが、別にどこに書き加えてもいいのでしょうか?
特にpdo.dsn=と言う様な行も見当たらないのですが
0038nobodyさん
2009/09/13(日) 18:59:27ID:???俺ならD:\Apache2.2\htdocsだぞ
0040nobodyさん
2009/09/13(日) 19:09:45ID:???0041nobodyさん
2009/09/13(日) 22:36:14ID:???\x
ってのを入れると、\xがなんか、
特別な意味に解釈されてしまって
うまく動かない、ってのを本で読んだんだが、
そうなの?
\xampp\sample\...
とかってパス名を使う場合。
0042nobodyさん
2009/09/13(日) 23:27:01ID:???0044nobodyさん
2009/09/14(月) 14:33:45ID:???同じ処理をメール受信トリガーで起動させるとfopenでエラーが出ます
具体的には
function csv_write($email){
$result = "rslt";
$date = date('Y/m/d');
$word = $email.",".$date."\n";
$pointer=fopen("./csv/test.csv", "a");
if($pointer == FALSE){
$result = "fopen失敗";
mail("$email", "check01", "$result");
return;
}
flock($pointer, LOCK_EX);
fputs($pointer, $word);
flock($pointer, LOCK_UN);
fclose($pointer);
mail("$email", "check02", "$result");
}
これをそのまま呼び出したPHPにブラウザからアクセスすると書込成功するのですが
メール受信で起動させるとcheck01のエラーメールが届きます
この原因は何が考えられるのでしょうか?
0045nobodyさん
2009/09/14(月) 14:48:08ID:???004644
2009/09/14(月) 15:49:02ID:???dirname(__FILE__)かましたら無事にできました!
ありがとうございました。
どーもこのカレントがちょろちょろ変わるのが慣れないですね
脳内エラーパターンリストに早く刷り込まないと
0047nobodyさん
2009/09/14(月) 17:21:41ID:???0048nobodyさん
2009/09/14(月) 17:24:41ID:???0049nobodyさん
2009/09/14(月) 17:56:27ID:???0050nobodyさん
2009/09/14(月) 18:01:44ID:???http://pc11.2ch.net/pc/
0051nobodyさん
2009/09/14(月) 19:04:31ID:???やりたいことは、ライブラリやフレームワークが提供する関数を上書きしたいということです。
素直に再定義するとエラーになるので、関数をいったん削除できないかと思い、質問しました。
よろしくお願いします。
0052nobodyさん
2009/09/14(月) 19:29:28ID:???0053nobodyさん
2009/09/14(月) 19:32:51ID:???0054nobodyさん
2009/09/14(月) 19:57:56ID:???0055nobodyさん
2009/09/15(火) 00:09:33ID:???0056nobodyさん
2009/09/15(火) 10:19:15ID:???それともSQLやデータベースの分野になるのでしょうか?
0057nobodyさん
2009/09/15(火) 10:20:51ID:???0058nobodyさん
2009/09/15(火) 11:11:20ID:???0059nobodyさん
2009/09/15(火) 11:13:16ID:???SQL,MYSQL,SQLLite,・・・
データベースと一口にいってもいろいろある
プログラミング言語と一口に言ってもいろいろあるのと同じ
分野と言うなら全部別
0060nobodyさん
2009/09/15(火) 11:14:18ID:???それともおにぎりやツナマヨの分野になるのでしょうか?
変だろ?
0061nobodyさん
2009/09/15(火) 11:49:37ID:???一種のプログラミング言語と考えていい
0062nobodyさん
2009/09/15(火) 15:37:41ID:???0063nobodyさん
2009/09/15(火) 15:51:29ID:???0064nobodyさん
2009/09/15(火) 16:31:07ID:???0065nobodyさん
2009/09/15(火) 16:38:30ID:???ただSImple Query Languageもあっている
0066nobodyさん
2009/09/15(火) 19:54:37ID:???どっちも同じような所で使われていて、本3冊を読んでみたりしたのですが分かりません
0067nobodyさん
2009/09/15(火) 20:09:58ID:???query →基本 初心者はこれを使え
prepare/excute → 上級者用
SQLインジェクション対策でこれを使う
はじめのウチは無視してOK
0068nobodyさん
2009/09/15(火) 20:37:26ID:???マルチと言うかは微妙だけどさ
0070nobodyさん
2009/09/16(水) 11:04:34ID:???俺は良く分かっていないからそうしてるんだけどw
0071nobodyさん
2009/09/16(水) 11:29:53ID:???sqlインジェクションの危険は同様にあるぞ
0072nobodyさん
2009/09/16(水) 12:18:18ID:???0075nobodyさん
2009/09/16(水) 12:37:40ID:???>変なデータ入れられることはないが
「;」をエスケープしなきゃupdateでもdrop tableでもし放題だよ
0077nobodyさん
2009/09/16(水) 12:47:21ID:???0078nobodyさん
2009/09/16(水) 12:50:19ID:???0079nobodyさん
2009/09/16(水) 12:57:15ID:???0080nobodyさん
2009/09/16(水) 13:05:30ID:???http://www.thinkit.co.jp/cert/tech/7/5/2.htm
このあたりが参考になる
0081nobodyさん
2009/09/16(水) 13:42:34ID:???「'」を無効化できるから
で、それだとコードが冗長になるって言うんでprepare/executeメソッドを使うんだよね?
でもそれでも「;」をエスケープしなきゃ駄目だって事?
じゃぁ対策はどうすればいいの?
他にメソッドとかあるの?
0082nobodyさん
2009/09/16(水) 13:57:05ID:???レスを順によく読め
;を使ったマルチプルステートメントのリスクは、prepare/executeを使わなかった場合の話だ
0083nobodyさん
2009/09/16(水) 14:01:53ID:???プリペアドステートメント使っていれば「;」も平気だよ。
SQLインジェクションへの対策はmysql_real_escape_stringなどを使う
これは\n\rや'";等をエスケープする。
プリペアドステートメントはそもそもインジェクション対策ではなく
クエリのパースの回数を減らしDB側の負担を軽く(リソース消費量を少なく)させるのが目的。
プレースホルダを使うのでインジェクション対策にも有効というだけ。
冗長だから使うというモノではない。
0084nobodyさん
2009/09/16(水) 15:07:06ID:72D7UAj5出来ればmessagesとかに一緒に出力出来ればと思ってるんですが
権限の問題かmessagesには出すことが出来ませんでした。
ログを出すさいにmessagesなどに出す方法があれば教えてください。
0085nobodyさん
2009/09/16(水) 15:20:48ID:???1.独自のログに出力させ、そのログをlogrotateでローテートさせる
2.loggerを使う
例)exec("logger -i -t TEST -p kern.warning 'TEST message from php'");
3.messagesの権限を変える。
好きなの選んで。
俺なら1を選ぶが。
0086nobodyさん
2009/09/16(水) 15:21:07ID:???messagesだとOKなのは、ローテーションされるから?
だったら、自前のログファイルもlogrotate等でローテーションすれば良いのでは
> 権限の問題かmessagesには出すことが出来ませんでした。
syslog()を使ってもダメだったってことかな
008784
2009/09/16(水) 16:23:03ID:72D7UAj5ログ関係いままで触ったことがなかったからloggerなんてものがあったの知らなかったです
ちょっと調べてみます。
>>86
logger同様にsyslogも知りませんでした。
使い方は調べてみて良さそうなほうを使ってみようと思います。
messagesだとOKっていうわけじゃないんですが、ログをフォルダ単位(/var/log)でとっているので
散らばるのはよくないかな〜という漠然とした考えでした。
0088nobodyさん
2009/09/16(水) 16:24:59ID:???include_path=".;c:/php/includes;C:/php/Pear;"と参考書やネットを見て設定したのですが、
自分のc:/phpフォルダを見ると、includesというフォルダやファイルが見当たりません
コレで大丈夫なのでしょうか?
殆どがこのような設定になっていますが、皆さんのphpフォルダの中にはincludesというファイルやフォルダが入っているのでしょうか?
008985
2009/09/16(水) 17:02:10ID:???syslog()なんてあったのか。
ならexecでloggerなんて呼ばないでsyslog()を使った方が良い。
ただ、syslog()は/etc/syslog.confに書かれたログにしか出力しないので注意
/etc/syslog.confの設定はスレ違いなので調べて。
で、そこまでやるならやっぱりlogrotateの方が良いと思うぞ
0090nobodyさん
2009/09/16(水) 18:31:51ID:???試したこと:
・「localhost」で自分のサーバーのMySQLに接続できる。
・「127.0.0.1」で自分のサーバーのMySQLに接続できない。
・別のサーバーのIPアドレスでそのMySQLに接続できない。
・別のサーバーのホストアドレスでそのMySQLに接続できない。
接続できないとき、mysql_connect、mysqli_connectともに、エラー2003、
「Can't connect to MySQL server on 'サーバー' (13)」のエラーが出ます。
また、mysqlコマンドで上記いずれも接続できることは確認しています。
なのでサーバーが起動していないとか、ポートが空いてない、
ユーザー権限・パスワードの設定ミスではありません。
宜しくお願いします。
0091nobodyさん
2009/09/16(水) 19:26:33ID:???009290
2009/09/16(水) 19:35:53ID:KVXgimyySELinuxが有効になっていて、それがmysqlの接続をブロックしていたためでした。
参考:ttp://www.media.t-kougei.ac.jp/~nagae/?p=2350
ありがとうございました。
0093nobodyさん
2009/09/16(水) 19:46:58ID:???0094nobodyさん
2009/09/17(木) 00:51:33ID:GtJThGz3コンストラクタがいまいちどのタイミングで使うのか理解出来ない
のですが、誰か教えてください。
0096nobodyさん
2009/09/17(木) 01:05:29ID:???Hogeクラスがあるとする。
このクラスのオブジェクトを作成する場合、
$obj = new Hoge(引数);
と記述する。
このとき、function __construct(引数)が定義されてると、自動的に実行される。
どのタイミングで使うかを気にしているみたいだが、
コンストラクタを関数として直接呼ぶ必要は無い。
009794
2009/09/17(木) 01:29:07ID:GtJThGz3>>96
えと・・・クラスを書いた後、オブジェクトを関数の中に書かなくても
最初に実行されるメソッドって事でいいんですかね?
0098nobodyさん
2009/09/17(木) 01:46:08ID:???日本語でおk
http://jp2.php.net/manual/ja/language.oop5.decon.php
0099nobodyさん
2009/09/17(木) 09:11:08ID:???もういい加減ネット調べるのもめんどくさくなってきた・・・
本でバッと見た方が早いし
IT後進国の我が県で一番大きな本屋に売ってなかったんですけど、何かいい本ないですか?
アマゾンで買います
0100nobodyさん
2009/09/17(木) 09:14:33ID:???http://pear.php.net/manual/ja/package.database.db.php
0101nobodyさん
2009/09/17(木) 10:54:41ID:aZjknirCネットでサクっと見るほうが効率よさそうな気もするけどな。
■ このスレッドは過去ログ倉庫に格納されています