1 名前:デフォルトの名無しさん (ワッチョイ 1342-Xqtn) mailto:sage [2016/11/09(水) 11:03:26.15 ID:eAjeihOa0.net] PHPに関する下らない質問用避難スレです。 まず読むこと【PHPマニュアル】 www.php.net/manual/ja/ 前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 5(実質6) echo.2ch.net/test/read.cgi/tech/1462971286/ 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 次スレを立てる時は本文の1行目に以下を追加して下さい !extend:on:vvvvv:1000:512 VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
669 名前:デフォルトの名無しさん (ワッチョイ 6f42-P4zY) mailto:sage [2017/01/27(金) 18:34:40.27 ID:K/AcGzHR0.net] Windows 7だから、ローカルにメールサーバーが入ってないってことかも? Linuxのディストリビューションだと、デフォルトで入ってるから悩まなくてもできるけど Windowsだと・・Virtualboxとか使った方が早いかも?
670 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/27(金) 19:02:58.26 ID:dfMoaU/d0.net] xamppにメールサーバーはいってたはずだが ただし原理は不明だが送信相手かプロバイダに弾かれるかして動作しなかったような・・ メールサーバーとして認められるなんらかの手続きがいるはずかと・・不明だが しかしグーグル経由して送信するんだろ?
671 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/27(金) 19:11:25.07 ID:dfMoaU/d0.net] これとおなじだろ。本物サーバーでなくて、メーラーと同様な動作させたいってことだろ? サーバーはグーグルまかせで。 xamppのMercuryを使ってローカル開発環境からメールを送信する xamppなどを利用してローカルでメールフォームなどを開発する場合、その動作を確認できなくて困ることがあります。 原因は、単純にローカルマシン自身がSMTPサーバではないからです。 xamppにはその問題を解消するために「Mercury」というソフトが同胞されています。これまで、幾度となく何度もチャレンジしたのですが、うまくメールを送信できませんでした。 しかし、今回、設定に成功したのでメモとして残しておきます。 メールが送信されるしくみ PHPの関数mb_send_mailなどでメールを送信すると、コマンドsendmailなどを使ってメールが送信されるのが通常です。 今回のMercuryを使う場合は、PHPでメールが送信されるとMercuryを経由して、Mercuryで設定したSMTPサーバにメールが投げられます。 つまり、Mercuryはローカルプログラムから受け取ったメールを、メーラーソフトと同じようにしてメールを送信しているわけです。 したがって、この環境を実装するためには、SMTPサーバが必要です。 もちろん、今利用しているISPのSMTPサーバで問題ありません。 helog.jp/xampp/mercury-mail/
672 名前:655 (ワッチョイ 5320-Cjs8) mailto:sage [2017/01/27(金) 19:26:49.62 ID:0yUPeU9L0.net] 返答遅れて申し訳ないです。 >>656 宛先は何度も確認して別のアドレス宛てにも送っているんで 間違いは無いと思います。 >>657 認証についてはよくわからないのですが、 PHPの本やmb_send_mailを説明しているサイトでは そのまま問題なくできているようなのです。 メーラーやコマンドライン使って問題なくメールは送れました。 >>658 ヘッダー情報の設定もしてみたのですが結果は同じでした。 PHPのmb_send_mailの勉強なので、もっと出来るようになったら他の方法も勉強してみようと思います。 >>659 ローカルのSMTPサーバを使うまで進んでいませんが mb_send_mailができないようでしたら勉強してみます。
673 名前:デフォルトの名無しさん (ワッチョイ f7f8-TlWQ) mailto:sage [2017/01/27(金) 19:30:01.77 ID:5anwLQVh0.net] phpとは違うけど自分もメール送信できない事があってはまった事があった 原因はアンチウイルスソフトで大量メール送信をブロックしていたためだった virusscanをもし使っていたら下記リンクを参考にしてブロックを外してみて kayulog.seesaa.net/article/159312396.html
674 名前:655 (ワッチョイ 5320-Cjs8) mailto:sage [2017/01/27(金) 19:48:09.53 ID:0yUPeU9L0.net] >>661-663 自分が試みているのは「xamppのfake sendmailを使ってローカル開発環境からメールを送信する」の方で、 ↓のサイトでも問題なく出来ているみたいなんですが 同じ設定をしてもメールが届かないんです。 helog.jp/xampp/fake-sendmail/
675 名前:デフォルトの名無しさん (ワッチョイ 7e7b-316P) mailto:sage [2017/01/27(金) 20:02:05.93 ID:SOi9h9fX0.net] Wireshark を使って、通信パケットでも見れば?
676 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/28(土) 10:35:24.40 ID:13qnO7m90.net] 質問です 「$sql = 'select time from sbdate';」 これを使って時間のデータの「40日前〜10日前」を呼び出したいのですがどう書き足すといいでしょうか? また、登録されている時間のデータで一番新しいデータの呼び出し方も教えていただけると助かります。
677 名前:デフォルトの名無しさん (ワッチョイ 1fd6-Q0kd) mailto:sage [2017/01/28(土) 11:31:58.90 ID:7mM7CN4P0.net] >これを使って時間のデータの「40日前〜10日前」を呼び出したいのですがどう書き足すといいでしょうか? $sql = "SELECT time FROM sbdate WHERE time >= :start_date AND time <= end_date"; $params = array( "start_date" => date("Y-m-d", strtotime("-40 day")), "end_date" => date("Y-m-d", strtotime("-10 day")) ); $result = SomeDBAccessLibrary::getInstance()->query($sql)->bind($params)->execute(); >また、登録されている時間のデータで一番新しいデータの呼び出し方も教えていただけると助かります。 $sql = "SELECT * FROM sbdate ORDER BY time DESC LIMIT 1"; $result = SomeDBAccessLibrary::getInstance()->query($sql)->execute();
678 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 00:24:45.60 ID:RwW5ifSZ0.net] windowsと
679 名前:Linuxでまるっきり挙動が違うってのに初めて遭遇したんだけど そうなるとやっぱりXAMPPって使わないほうがいいのかね? [] [ここ壊れてます]
680 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/01/29(日) 01:23:23.51 ID:q/JB8S+S0.net] 手元でもテストするけど最終的にはDockerで実環境を再現したコンテナ作ってテスト走らせるわ
681 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/29(日) 02:09:49.58 ID:9y6Ir6At0.net] >>669 ありがとうございました。 XAMPPって駄目なのか 簡単に設定できたからずっと使ってた 今はローカルでやる場合は何が主流なんだろう
682 名前:デフォルトの名無しさん (ワッチョイ 5b42-y5A3) mailto:sage [2017/01/29(日) 02:27:11.14 ID:c27yycvu0.net] 仮想環境で実環境と同じOS使うのが楽だと思う
683 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/01/29(日) 02:38:41.26 ID:vdPv4D6s0.net] 別にだめじゃない。 XAMPP使っていて問題が起きるような人は結局、本番環境で開発しないと動かないコードが出来上がるタイプ。 つまりOS以外での差もあるわけで、Linuxで開発したからといって、本番環境のLinuxで動くとも限らないということ。 ていうか具体的にどこで問題がおきたの? Windows専用とか、Windowsだと制限されてるものとかはあるだろうけど(初めて使うものはちゃんと調べる)、 PHPは曲がりなりにもマルチプラットフォームであって、OS差を埋めるためのコードはちゃんと存在するはず。 例えば定数とかうまく使えてる?
684 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/01/29(日) 03:10:55.44 ID:CzSBugT30.net] 本番サーバがLinux環境なら、ローカルもLinuxに合わせたほうがよくない? 環境維持は大事だと思う
685 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/29(日) 09:40:28.87 ID:9y6Ir6At0.net] PHPの開発環境は皆どうしてる? Google ChromeとTeraPadで書いて確認してたけど なんかいいのあれば教えてください 流石に疲れました
686 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/29(日) 09:49:26.20 ID:VE53RC2e0.net] エディタは好きなのでいいし、PHP開発の大部分はブラウザは不要だろ? そっちがメインになることもあるだろうけど。 HTMLなど見える部分以外の動作を作るほうが多いからブラウザでの確認はあとでいい。
687 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 10:21:35.96 ID:RwW5ifSZ0.net] 画像周りのライブラリ拾ってきたときにWinとLinuxで動作違ったりしたな
688 名前:デフォルトの名無しさん (ワッチョイ ea30-Ve17) mailto:sage [2017/01/29(日) 10:24:34.69 ID:RwW5ifSZ0.net] って670俺だわ酔っ払ってたすまん >>674 mPDFでWinだと画像パス指定するだけでHTMLそのまま吐くんだけどLinuxだと404になってるのよね
689 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/01/29(日) 11:13:17.56 ID:vdPv4D6s0.net] サードパーティ製はさすがにわからないけど、 症状からしても画像パスの指定方法に問題があるのだろう。
690 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/30(月) 21:53:03.65 ID:Jl7rOjwJ0.net] ライブドアブログに記事をアップロードできるようにしたいがどうしたものか? AtomPub APIというのを使えばできるとらしいが 使い方がわからん… これは何かダウンロードして使うものなのだろうか?
691 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/30(月) 22:34:22.73 ID:gPTswH1+0.net] そのくらい初心者でもできるだろ。じぶんも初心者だが・・・ ためしにやってるみる
692 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/30(月) 23:21:18.49 ID:gPTswH1+0.net] >>681 投稿できたぞ これそのままつかった https://github.com/seiyaan/LiveDoorBlogAtomPub
693 名前:デフォルトの名無しさん (ワッチョイ 1fa0-fVsk) mailto:sage [2017/01/31(火) 00:15:35.31 ID:6jwW0/Fs0.net] >>683 ありがとうございます。 とても助かります。 「通信に PEAR の HTTP_Request2 を使用しております。インストールをお願いします。」 うう… また知らん機能を… PEAR とか HTTP_Request2 って何なんじゃい 今日はもうギブアップ
694 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 00:40:09.72 ID:4WQSXuaN0.net] http request2って古いな 普通にfile_get_contentsでできるんちゃうか
695 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/01/31(火) 00:48:01.99 ID:H/15YF7/0.net] guzzlehttp/guzzleがPSRのインターフェイスの実装になってるからオヌヌメ
696 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 04:06:45.41 ID:WN418v1sH.net] windows環境で何年も開発してるけど、本番環境で問題起こったことないよ?
697 名前:デフォルトの名無しさん (ワッチョイ 3338-P4zY) [2017/01/31(火) 09:16:31.18 ID:HVCS3sQm0.net] phpの知識がないのですが、一通り学ぶのにオススメの本を教えてください。 おいらはC#でプログラム書いてます。 javascriptとperlの知識もあります。
698 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/01/31(火) 09:18:56.40 ID:I3GVvv+h0.net] つ php_manual_ja.chm (18,027,986 bytes) php.net/get/php_manual_ja.chm/from/a/mirror
699 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) mailto:sage [2017/01/31(火) 10:25:42.13 ID:AzvNrs+Ya.net] 質問です。投稿フォームからPOSTされた内容AとBを格納し 格納された値Aを サイトに投稿、Bをメールで自分のアドレスに飛ばす、ということをやりたいです。 <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $rows = json_decode(file_get_contents('bbs1.json'), true); if (!empty($_POST['write'])) { $row = array( 'A' => $_POST['A'], 'B' => $_POST['B'], ); array_unshift($rows, $row); file_put_contents('bbs1.json', json_encode($rows)); } ?> 〜htmlによる入力フォーム。省略〜 <?php foreach($rows as $row): ?> <strong><?php echo h($row['A']) ?></strong> <?php endforeach ?> <?php foreach($rows as $row): ?> <?php $_POST['B'] = $B; mb_send_mail("example@yahoo.co.jp", $B) ?> <?php endforeach ?> としたのですが動きません。見当違いな箇所は多々あることは自覚していますが どうすれば良いのか全く分かりません。何かアドバイスをお願いいたします。
700 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:02:26.33 ID:4WQSXuaN0.net] $_POST['B'] = $B; 逆じゃないの?
701 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:04:20.78 ID:4WQSXuaN0.net] このソース自分で書いたの? <?php foreach($rows as $row): ?> <?php endforeach ?> htmlのこれどっちもいらんでしょ
702 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 11:23:13.97 ID:AzvNrs+Ya.net] お返事ありがとうございます >>691 $B = $_POST['B']; ということでしょうか?やってみましたが投稿はできてもメール送信ができません・・・ >>692 ttp://ponk.jp/php/file/bbs1 を参考に見よう見まねで打ちました 実際には4つぐらいの項目を入力したいのでこうした方が良いのかなと考えた次第です
703 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 11:54:46.58 ID:4WQSXuaN0.net] >>693 掲示板だったのね。なら下のforeachだけ要らない mb_language("Japanese"); mb_internal_encoding("UTF-8"); ↑を<?phpの下に書いて メールの部分をこうすれば送信できるんじゃないか $email = "example@yahoo.co.jp"; $to = 'example@yahoo.co.jp''; $header = "From: $email\nReply-To: $email\n"; mb_send_mail($to '題名', h($row['B']), $header);
704 名前:デフォルトの名無しさん (ワッチョイ 7e7b-316P) mailto:sage [2017/01/31(火) 12:07:20.02 ID:SZ8YrWi+0.net] >>688 山田祥寛(よしひろ)、翔泳社 10日でおぼえる PHP 入門教室、第4版、2012 この本では最短で、一通り作れるようになるけど、文法の解説は少ない。 それに、もっと新しい本もあるかも知れない
705 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:45:54.81 ID:143GYQRi0.net] >>688 perlでwebアプリ作成経験あるなら 関数リファレンス1冊あれば十分 それすらPHPマニュアル読めばいいから無くてもいい あとはperlで作ったのと同じものをPHPで組んでみればいい PHPは○○の処理する時には××という組み込み関数(あるいはライブラリ)がある という事をできるだけたくさん知っておく事が大事だと思う 細かい使い方までは覚えて無くていい(使う時になって調べればいいだけ) 楽してなんぼのスクリプト言語で車輪の再発明はするなって事
706 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:48:39.39 ID:143GYQRi0.net] >>676 PHP Storm一択 テキストエディタでシコシコPHP書くとか何の苦行だよって思うw
707 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 12:55:57.11 ID:143GYQRi0.net] >>675 案件による 俺はCentOS環境を用意してるけど 最近のPHPで実装できるレベル(ハッキリいうとレベルが低い)の案件なら 大半はwindows環境でxamppで開発しても何ら問題ないな
708 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:00:49.60 ID:AzvNrs+Ya.net] >>694 ありがとうございます!教えていただいたように <?php foreach($rows as $row): ?> <strong><?php echo h($row['A']) ?></strong> <?php endforeach ?> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $email = "example@yahoo.co.jp"; $to = "example@yahoo.co.jp"; $header = "From: $email\nReply-To: $email\n"; mb_send_mail($to , h($row[B]), $header); ?> としたのですが合ってますでしょうか?"題名"の部分があるとエラーになってしまうので 一旦空白にしました 動かしてみたのですがメールは届くのですが内容が From: example@yahoo.co.jp Reply-To: example@yahoo.co.jp だけでBに入力した情報は届きませんでした・・・ もし修正箇所等あればお教えください。質問ばかりですみません
709 名前:デフォルトの名無しさん (JP 0H13-zSxl) mailto:sage [2017/01/31(火) 13:03:28.72 ID:WN418v1sH.net] windowsでいいよ 環境による違いって1%以下じゃね? それなら開発しやすいwindowsのほうが楽
710 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:13:47.97 ID:4WQSXuaN0.net] >>699 mb_send_mail($to, '題名', h($row['B']), $header); , が消えてた あと [B] じゃなくて['B'] だからな それとフォームでBにpostしてるんでしょうね? ↑でダメならとりあえず $row['A'] で表示されるか試してみなよ
711 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:14:05.61 ID:143GYQRi0.net] >>699 一連の流れを読んでないのに茶々を入れて申し訳ないが メール送るのにmb_send_mail()使うとかやめとけ(細かい理由はググって勉強して) 俺は昔ZendFrameWorkのコードを元に自作してしまったが 探せばlocalからでも外部のSMTPサーバー使ってでも送れる 便利なライブラリがいくらでもあるだろう PHPはメール一通送るのに苦労するような言語じゃないぞ 楽してなんぼの言語だ
712 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:31:33.78 ID:AzvNrs+Ya.net] >>701 失礼しました 今度は題名は表示できましたが他は空白で$row['A']でもダメでした・・・ すみませんもしかしたら誤解を与えていたかもしれないですが投稿フォームは一つで サイトへの投稿とメール送信をしたい、という意味でした。>>690 で省略したフォームは <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>掲示板1</title> </head> <body> <form method="post"> A: <input name="A"><br> B: <input name="B"><br> <input type="submit" name="write" value="送信"> </form> <hr> です
713 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 13:37:03.58 ID:AzvNrs+Ya.net] >>703 またちょっと日本語が変でした AとBという入力フォームと一つのボタンでAをサイトへ投稿、Bをメール送信したい という意味です >>702 そうなのですか?上級者向けだとか脆弱性があるとかでしょうか? ともかくありがとうございます、調べてみます
714 名前:デフォルトの名無しさん (ワッチョイ e6af-AZYz) [2017/01/31(火) 13:46:41.41 ID:4WQSXuaN0.net] >>703 ごめん $rowが書き換えられてたから表示されないんだわ <?php foreach($rows as $r): ?> <strong><?php echo h($r['A']) ?></strong> <?php endforeach ?> こうしたらできると思うわ ちゃんと勉強して改造したほうがいいと思うけど
715 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 13:53:32.88 ID:143GYQRi0.net] >>704 mb_send_mail()はPHPのmb周りの文字エンコーディングの扱いの事をよく理解しておかないと 文字化けを起こしたり予期せぬ動作を起こすから メールソフトでメールを作るのと同じ感覚で from,to,subject,cc,bcc,添付ファイルetcを指定するだけで簡単にメールを送ることができるライブラリがあるのに わざわざメールヘッダを自分で組み立てる必要があるmail()・mb_send_mail()関数は PHPで使う必要性は全くない
716 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 14:00:11.16 ID:iovKNvqi0.net] mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな mail使ってメール送ったところでこの関数の糞みたいな仕様を覚えるだけで融通が効かないし
717 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 14:03:28.08 ID:143GYQRi0.net] >>707 そうそう mb_send_mail()なんてPHPのダメな部分を凝縮したような関数だと思うw
718 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/01/31(火) 14:09:43.37 ID:AzvNrs+Ya.net] >>705 ありがとうございます!できました! 本当に感謝です。そうですね、ちゃんと噛み砕いて改造できるようにします >>706 なるほど、そういうことですね 他の送信方法を調べてみますね。ありがとうございます
719 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 15:18:40.23 ID:desKHZjFH.net] >>707 > mailでメール送るぐらいならpopenでMTAにコマンド送る方がまだ勉強にはなるわな 勉強にはなるだろうが、実用度はどうかな
720 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/01/31(火) 15:46:06.26 ID:khfbkkxs0.net] >>708 同時にもっとも便利な側面でもあるよな
721 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/01/31(火) 16:57:19.69 ID:GujF4JLqa.net] 何も考えずswiftmailer使っとけばいいよ
722 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 17:21:30.16 ID:143GYQRi0.net] >>710 localのMTAから添付ファイル付きのHTMLメールを送るとかだと mail()関数使うよりpopenで直接MTA叩くほうがまだ簡単かもなw
723 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/01/31(火) 17:44:39.09 ID:desKHZjFH.net] >>713 オナニーは一人でやってろ
724 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/01/31(火) 19:14:14.64 ID:iovKNvqi0.net] メールで添付ファイル送る時にpopenを使うのってPHP4の頃は結構普通だったけどなあ mailで送るのとコードの行数ほとんど変わらんだろ
725 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/01/31(火) 19:32:41.67 ID:143GYQRi0.net] 行数っていうかコードの内容自体がほとんど一緒になる(当たり前) PEAR(笑)を使いたくない時は使ってたっけ とりあえずオナニーって言葉が使いたかっただけかなとw
726 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:06:08.09 ID:JTv4YpQ+0.net] mail($to, $subject, $message, $headers); が $m = popen($mta_path, 'w'); fwrite($m, $headers); fwrite($m, $message); になるだけだし mail関数って何年か前から脆弱性を指摘されてたのに結局根本的な解決はされないまま最近になってやっとphpマニュアルに警告が載せられたでしょ 実用度でも後者の方が上だけど710はライブラリがどう実装されてるかコードなんて読んだ事ないんだろう まあペチパーらしいよ
727 名前:デフォルトの名無しさん (ワッチョイ a33c-bF0B) mailto:sage [2017/01/31(火) 21:18:03.59 ID:JTv4YpQ+0.net] >>715 今でも普通 自前で実装するかライブラリ側で実装してるかの違いだけで
728 名前:デフォルトの名無しさん (ワッチョイ d3f8-AZYz) mailto:sage [2017/02/01(水) 04:18:07.09 ID:8zVZaxIi0.net] socketでsmtp実装するとかなんかと勘違いしてんじゃね
729 名前:デフォルトの名無しさん (JP 0H36-Ijd2) mailto:sage [2017/02/01(水) 11:20:13.83 ID:y1IRJd7eH.net] >>717 お前こそmail()の中身知らずにいってるだろ まずはPHPのコード読んでからもの言え お前のは、単なるオリジナルコードの劣化実装に過ぎない
730 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:05:05.01 ID:AQgy4mwi0.net] PHPのmail関数の実装って 簡単にいえばMTAパイプオープンしてコマンド流してるだけだろ その過程で余計な事をやってるから使いにくいわけで だったらmail()なんか使わずにpopenしてしまった方が楽って話 を皆さんがしてると思うわけだが 1人だけトンチンカンなのが居て笑えるw
731 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:14:12.24 ID:AQgy4mwi0.net] ちなみに717が書いてる >mail関数って何年か前から脆弱性を指摘されてた ってのもPHPが「余計な事」をやってるせい まぁそれこそ実装コード読めば分かること 今PHPマニュアル見たらやっとこの件について追記されたんだな ほんと今更だけどw
732 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 12:25:58.75 ID:LECYUBIq0.net] Perlの頃はパイプ開いてやってたなー
733 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 12:29:39.79 ID:2dY+W0qT0.net] PHPMailerで話題になった脆弱性の件かなあ PHPのコードレベルでいえば mailやmb_send_mailの第5引数にphp_escape_shell_cmdを通してるのが原因のやつ PHPマニュアルに書かれたのは俺も今はじめて知った >1人だけトンチンカンなのが居て笑えるw たしかに mb_send_mailの糞の上に糞を塗り固めたようなPHPのコードとか本当に読んだことあるのかね
734 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 12:47:28.06 ID:AQgy4mwi0.net] そうそう PHPの関数で言うとescapeshellcmd()が勝手に適用される(PHPって本当にこういうのが多い) せいでMTAがsendmailだと任意のコマンドを実行できてしまうって話 postfix使ってれば関係ないし今更sendmailねぇ…って思うけど sendmailとか苦行過ぎて二度と触りたくないw
735 名前:デフォルトの名無しさん (オイコラミネオ MM76-bF0B) mailto:sage [2017/02/01(水) 13:00:46.75 ID:IzshbyCZM.net] 今の若いサバ管だとsendmail触れないのも多いんだろうな いや俺ももう関わりたくはないけどさ
736 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 16:23:09.34 ID:C9GybJdQ0.net] 【OS】windows【PHP】5.6【連携ソフト】MySQL exec()を使い別のPHPファイルを実行し、その別ファイルで主にmysqlで処理したいのですが、サーバー上ではなぜかsqlに接続できません。 条件として、exec()を使うにあたって呼び出し先のPHPは、サーバーで用意されているPHPと別のカスタムインストールしたPHP(同じホスト内)を使います。*利用しているサーバーでexec()を使用するために必要な措置。 exec()を使わなければMySQLは問題なく使えています。 そして、exec()を使って別のPHPファイルを実行するところまでは成功しています。 原因が分かる方いましたらよろしくお願いします。
737 名前:デフォルトの名無しさん (アウアウアー Sa76-R94c) mailto:sage [2017/02/01(水) 17:00:19.08 ID:dFm0/nQHa.net] macOSを利用しておりmampを使って環境を準備しようとしてるのですが、数点教えてもらいたい事があります macOSのターミナルでphp -v のコマンドを入力すると、5.系が出てきます mampで7.xをインストールした後に、上記のコマンドを入力したのですが、変化がありませんでした そこで、適当なphpファイルを作りmampのdocルートに配置、phpversion()を使って本当に動かしてるバージョンを出力したところ7.x系が表示されました これって、mampがOSとは別にphpの実行環境を作って、OSとは無関係に動作させてるのでしょうか 後、mampはインストールして不要になって削除したりした場合にOSに影響出るとかはありますか 基本的にパスとかいじらなければ問題ないのでしょうか mampのスレがなかったのでこちらに書き込みしましたがご存知でしたらお願いします
738 名前:デフォルトの名無しさん (ワッチョイ 6bc1-ngM0) [2017/02/01(水) 17:32:00.71 ID:LECYUBIq0.net] >>727 お前はそれだけ聞いて原因が特定出切ると思うのか? >>728 どのMAMP使ってるか知らんけどその程度よく分かってないならMAMPなんて使っちゃあかんで macOSならそもそも標準でPHP入ってるし最新版もHomebrewで簡単にインストール出来る
739 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 17:56:31.57 ID:C9GybJdQ0.net] >>729 もし使ってる人なら特定できないまでもある程度の見当は付くのではないかと思ってかなり省略しましたが、逆に他に何が必要でしょうか?
740 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 17:59:02.93 ID:AQgy4mwi0.net] >>727 エスパーで答えてみるw 呼び出し元のPHPを「A」とし、Aから呼び出されるPHPを「B」とすると Aを経由せずにBから直接MySQLに繋げられるか試してみたら? たぶん繋がらない
741 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 18:04:44.97 ID:AQgy4mwi0.net] >>728 ターミナルから php -i を実行して mampのdocルートに置いたPHP <?php phpinfo(); でを実行して比較してみ PHPのバージョン以外に違うところが分かるから 特にインストールパスに関する部分をよくみるといい
742 名前:デフォルトの名無しさん (ワッチョイ e650-Q0kd) [2017/02/01(水) 18:25:08.21 ID:C9GybJdQ0.net] >>731 レスありがとう。早速試してみました。 呼び出し元をaaa.php、exec()による呼び出し先をbbb.phpとすると、 ローカル環境だとaaa.php、exec()使用による呼び出しのbbb.php、bbb.php直接ともにsqlに繋がります。 サーバーだと、aaa.phpとそれ以外もexec()不使用であればどれもsqlに繋がります。またbbb.php直接でも繋がります。 サーバーでexec()を使ったbbb.phpによるsqlの接続が出来ない状態です。(今のところSQL以外は問題なく実行できてる) ホストは同じなのですが別のPHPからbbb.phpを実行しているのが原因でしょうか。サーバーの都合で別PHPを使っていてローカルでは同じPHPからの実行なので。。
743 名前:デフォルトの名無しさん (ワッチョイ 5b46-FuHd) mailto:sage [2017/02/01(水) 18:49:36.91 ID:2dY+W0qT0.net] >>733 1.サーバー環境 2.aaa.phpとbbb.phpとmysqlは全て1の同一サーバー上にあるのか 3.aaa.php内で実行されるexec()の内容(具体的にどうやってbbb.phpを呼び出してるか) 4.bbb.phpからmysqlへはどうやって繋いでるか(pdoその他) あたりを書いてみては? そもそもexec()を使って実行ってのを本当にする必要があるのかってところから疑問ではある
744 名前:デフォルトの名無しさん (ワッチョイ 6bc1-R94c) mailto:sage [2017/02/01(水) 19:00:17.38 ID:LECYUBIq0.net] まずどういうエラーで繋がらねぇのかが問題 つか出せる情報全部出せや何を出し渋っとんじゃ
745 名前:デフォルトの名無しさん (ワッチョイ eec9-AZYz) mailto:sage [2017/02/01(水) 19:08:26.13 ID:z0RwPWf30.net] >>735 こういうアホ(に見られがちな初学者)は、 何が「情報全部」になるのかわからないんだよ だから、全部出せなんていうのじゃなくて ○○と△△と□□を書け と具体的に指示すべき
746 名前:デフォルトの名無しさん (ワッチョイ 1f56-FuHd) mailto:sage [2017/02/01(水) 19:08:52.47 ID:AQgy4mwi0.net] こういうレベルの質疑所では少ない情報からエスパーで回答を導き出すのも1つの楽しみ方ではある いや質問する以上は出せる情報は出すべきなのは確かなんだけどw >>733 なんかあまり読まずに適当なこと書いてすまなかった
747 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:19:51.15 ID:O7iUTg1Sa.net] >>736 ご尤もではあるがテンプレ読まない従わないはNG >>737 悪くはないが勘違いを生産しないためにもこっちがオススメよー エスパーが質問に答えるスレ ttp://echo.2ch.net/test/read.cgi/tech/1187922645/
748 名前:デフォルトの名無しさん (アウアウウー Sa7f-R94c) mailto:sage [2017/02/01(水) 19:39:38.68 ID:Dgu+KGMra.net] あんがとさんです >>729 ホームブロウ?実はこれを使いたくないというのがmamp使う理由で、まあ言って仕舞えばOS汚したくない病なんですよね、、、 今のところ仮想環境にもう1つmacOS入れるかたまに使う仮想Windowsにmampを入れようか検討 けど、リソース無駄だし快適に操作したいからmacOSに直接入れるか悩んでるんですよね 前にPythonとか勉強してたときはLinux仮想で何とでもなったんですが、mampがLinuxないから めんどくさがらずxammpとか使えば良いのか、、、 >>732 やってみたのですがパスはデフォの/usr/bin/phpでござった、というかよくわからんかったです
749 名前:デフォルトの名無しさん (アウアウカー Sa5b-R94c) mailto:sage [2017/02/01(水) 19:47:06.68 ID:O7iUTg1Sa.net] >>739 homebrewなんかよりMAMPの方がよっぽど何やってるか分からんと思うのだが お前さんの現状がそれを証明してるでしょ homebrewが嫌なら標準のもの以外何使ったって一緒だし プログラムより先にその辺勉強したら?
750 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 21:05:47.39 ID:yFAqAUso0.net] >>739 もし可能であれば、 homebrewを使う or vagrantを使う 個人的には後者で、Lamp環境などをCentOSで構築したい派 ただしその場合、Linux環境を整える知識もいるけど、 サーバサイド開発者にとってLinux操作は欠かせないからやろうぜ
751 名前:デフォルトの名無しさん (ワッチョイ bf17-bE/B) mailto:sage [2017/02/01(水) 21:16:11.38 ID:+ImP5E6S0.net] >>740 あんまりその辺理解しないでMAMP使おうとしたのがそもそもだめだったのね 別の言語で環境とかでめんどくさい思いしたから楽できるなら楽しようかと思ったのが間違いか >>741 一応、Linuxのエンジニアだからそっちの知識はそれなりにあるんだけど、 さっとPHPの本とか勉強して簡単なものなら作れるくらいになりたいなーって思って ま、出直してきます
752 名前:デフォルトの名無しさん (ワッチョイ 6bc1-y5A3) mailto:sage [2017/02/01(水) 21:23:04.08 ID:LECYUBIq0.net] >>742 Linuxのエンジニアの癖にwhichも知らんとかうっそだろお前
753 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 22:44:15.69 ID:yFAqAUso0.net] >>742 Linuxエンジニアなら、尚更mamp使う必要ないし vagrantなり、VM環境でやったほうがいいよ
754 名前:デフォルトの名無しさん (ワッチョイ bf17-R94c) mailto:sage [2017/02/01(水) 23:02:41.06 ID:+ImP5E6S0.net] >>743 ホントでっせ whichはわかるが、今回のお悩み解決に自力で繋がらなかったからここで聞いたんよ、許して >>744 アドバイス通りさっきsuseさんでphp7の環境作った!楽しようとしたのがあかんかった 実務で使うわけじゃないがmampで本番環境とか動かしてるところなんてなさそうだし 自分で環境作るってのは大事な勉強と痛感いたしました
755 名前:デフォルトの名無しさん (ワッチョイ 6f42-P4zY) mailto:sage [2017/02/01(水) 23:10:31.30 ID:OMBPerng0.net] >>727 よくあるトラブルとしては、環境変数周りかな localとサーバーで違ったりするから あとexecだと、パスが違うとか、インクルードがうまくできてないとかも多いけど エラーログとかに普通は何か出てるからわかると思うが
756 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:23:53.32 ID:sVMiC1ZCa.net] たびたび質問失礼します。掲示板を作っているのですが10件ごとに表示するには どのように書けば良いでしょうか。現行では <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/bootstrap.min.css"> </head> <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $rows = json_decode(file_get_contents('back.json'), true); if (!empty($_POST['write'])) { $row = array( 'A' => $_POST['A'] ); array_unshift($rows, $row); file_put_contents('back.json', json_encode($rows)); } ?> <?php foreach($rows as $r): ?> <p><?php echo h($r['A']) ?></p> <hr> <?php endforeach ?> </body> </html> このような形になっております。色々調べてたのですが書き込み内容を一度格納してから 表示する場合でのやり方が分からず悩んでいます。どうか宜しくお願い致します
757 名前:デフォルトの名無しさん (アウアウウー Sa7f-Hx4G) [2017/02/01(水) 23:35:28.37 ID:sVMiC1ZCa.net] ");
//]]>-->758 名前:nk">>>747 追記です 掲示板のhtml等は入りきらないので省略しております [] [ここ壊れてます]
759 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:36:54.53 ID:ciQGnh7G0.net] すでに存在してるサンプルで勉強したほうがいい
760 名前:デフォルトの名無しさん (ワッチョイ f742-6a6W) [2017/02/01(水) 23:40:56.03 ID:ciQGnh7G0.net] いまぐぐってみたところ。 PHP と SQLite を使った掲示板 https://oku.edu.mie-u.ac.jp/~okumura/php/sqbbs.php PHP+SQLite3で2ちゃんねるっぽい掲示板を作る - Qiita qiita.com/torokko/items/8a07519782f01a68c627 PHPとSQLiteで簡易BBSの作成 | 勉強したことのメモ taitan916.info/blog/?p=1923 八角研究所 : PHPで週末プログラミング(1) - 掲示板を作ってみよう(1) www.hakkaku.net/articles/20080818-260 jQueryとPHPとSqliteを使ったAjaxのシンプルなチャット picxpic.com/?p=104 SQLite 簡易掲示板 rrr-kb.grrr.jp/php/sqlite_bbs/index.php 掲示板 UTF-8版PHP掲示板,画像ファイル他アップロード,スマホ対応,PHP7対応,スパム対策 www.vector.co.jp/soft/unix/net/se453023.html .
761 名前:デフォルトの名無しさん (ワッチョイ ee5b-FuHd) mailto:sage [2017/02/01(水) 23:57:07.31 ID:yFAqAUso0.net] >>747 デバッグ方法を参考までに教えます。 $rows = json_decode(file_get_contents('back.json'), true); # $rowsにはデータは格納されているか確認する var_dump($rows);exit; 問題なければ、 if (!empty($_POST['write'])) { # ここを通過しているか # $row配列を作る前に、適当にechoしてみる。 # exitもすること。 問題なければ、 file_put_contentsされているかを確認 中身のデータがどうなっているのか、 順序もって確認してみましょう。 ここまでできれば道は開かれる。
762 名前:デフォルトの名無しさん (ワッチョイ 13d4-xTzd) mailto:sage [2017/02/02(木) 00:09:14.77 ID:Vu6mO5aQ0.net] データが配列に入ってるぽいからarray_slice()で10件取り出すとか
763 名前:デフォルトの名無しさん (アウアウウー Sa07-gztn) [2017/02/02(木) 00:52:50.08 ID:8sL76eTEa.net] >>750 わざわざありがとうございます。もちろん参考にはさせていただきたいのですが あくまで一度格納したデータを書き込んだ上で件数ごとに表示させたいのです その先行事例が見つけられず・・・もちろんそもそも参考にできないのも力不足ゆえですが >>751 ありがとうございます。すみません、デバックというのもやったことが無いのですが このコードを書き込んでサイトが表示されれば問題が無いというようなことでしょうか? >>752 ありがとうございます 調べたのですがどのように使えば良いか検討つきません・・・ この場合、<?php foreach($rows as $r): ?> の部分から変える必要があるという事でしょうか
764 名前:デフォルトの名無しさん (ワッチョイ cf7b-gPBI) mailto:sage [2017/02/02(木) 01:31:57.69 ID:QtNjUxgZ0.net] homebrew を使わなかったら、パッケージの依存関係を管理できない。 Linuxでもdeb/rpm を使わなかったら、何もできない パッケージマネージャーを使わないで、自分でパッケージを入れるなんて、100%無理だろ。 複数のパッケージのインストールの順番が異なるだけで、違ってくる。 ABC, BCA という順番では、結果が違うし、そんなことまでユーザーがわかるわけがない Chef, vagrant, Docker などのレシピを取ってくればいい Chefのレシピも結局は、OSの種類を見て、debian系ならdeb、RedHat系ならrpmを使うから、 ユーザーは、個別のパッケージマネージャーを意識しないで済むだけ
765 名前:デフォルトの名無しさん (ワッチョイ 03c1-yene) mailto:sage [2017/02/02(木) 04:01:01.54 ID:ICaoPi9S0.net] >>745 何ていうかPHPの初心者ってだけなら分かるけどLinuxのエンジニアがその程度の問題を解決出来ないのは許されねぇと思うわ
766 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 12:25:55.17 ID:sBmZcLbl0.net] >>753 で、751が書いてくれてる var_dump($rows); exit; は実行してみた? 752が書いてくれてる array_sliceのPHPマニュアルを読んで print_r($rows, 0, 2); とかは試してみた? もしそれすら試さずに質問してるなら ハッキリ言うけどプログラミングには向いてないわ 手遅れにならないうちに違う道に進むことをおすすめする
767 名前:デフォルトの名無しさん (ワッチョイ b3c9-C7TH) [2017/02/02(木) 15:08:51.61 ID:t2qREDFK0.net] 例外を別のファイル(呼び出し元)で受けたいのですが、どのように例外と判断すればよいのでしょうか? a.php//呼び出し元 <?php $hoge = new classB(); $result = $hoge->get(); // この$hoge->get()でエラー発生(PDOでの接続エラーとか) // エラーをa.phpで処理(エラー内容の取得と、エラーメッセージ表示)したい ?> b.php//呼び出される側 <?php class hoge { function get(){ try { //pdoで接続とか } catch (PDOException $e) { //サイトとかの例だと、ここでエラーメッセージ等の処理をしてしまいます。 //呼び出し元のa.phpで、エラー時の処理をしたいのです。 } } どなたか教えてください。
768 名前:デフォルトの名無しさん (ワッチョイ c346-1ST5) mailto:sage [2017/02/02(木) 15:15:09.65 ID:sBmZcLbl0.net] >>757 例えば Bで期待された結果が得られた時は”○”と出力 そうでなければ”×:例外内容”を出力 AはBの出力結果(○ or ×)によって処理 ○とか×は例で書いただけで実際はHTTPのステータスコードみたいに 200ならOK とか 50Xならエラーとか きちんと仕様を決めるといい web APIとか扱ったことないのかな? あれと同じことだよ
769 名前:デフォルトの名無しさん (ワッチョイ 03c1-4SR0) mailto:sage [2017/02/02(木) 16:01:33.97 ID:ICaoPi9S0.net] >>757 例外はレイヤーで設計する 低レベルAPIが投げた例外は高レベルAPI内部でキャッチして集約(元々の例外は$prevでチェーン) 或いはキャッチしたAPIで処理し切る(復旧するなり落とすなり) いずれにしてもどのレイヤーが何処までの例外に対応するかは決めておかにゃならん 途中でキャッチしてエラー吐く処理して親に例外通知しないならそこで例外処理は完結していなければならない 例外安全とかも考えるべし