PHP質問・雑談スレ5【初心者お断り(ROM歓迎)】
■ このスレッドは過去ログ倉庫に格納されています
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
https://mevius.5ch.net/tech/ (【PHP】で板内を検索)
前スレ
https://medaka.5ch.net/test/read.cgi/php/1498653249/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
https://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
https://mevius.5ch.net/test/read.cgi/tech/1538096947/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造 >>644
非同期I/Oは応答があったときに、手が空いていたら処理するだけでしょ?
別の処理が走っていたらそれが終わるまでは待つことになる 別プロセスでスクリプト起動してリソースの要求から応答待ちまでやればいいじゃん そもそもそんな応答がめちゃくちゃ遅いリソースを扱うことってあるか? DBの事なにもしらない時に作ったプログラムがそうだったな
インデックスなしでDB構築しって、検索するだけで30秒ぐらいかかってたw
ついでにセキュリティホールの塊
・・・はいいとして、少しでもまたせたくないってことじゃね
webは2,3秒待たせるだけでも人がどんどん減る スレッドやプロセスは重量級リソースだから
そんな大量にそもそも生成できないだろ?
1秒で1000スレッド生成+切り替えとか無謀
非同期I/O基本にして
足りなければサーバー増やした方が
利用効率が高い
その証拠にPHPのようなプロセスを大量に生成するスタイルを
他言語のフレームワークは使ってないw 外部サイトのリソースとかならあるんじゃね?
ウェブスクレイピングしてるとかなら応答にも時間が掛かるだろう
それも複数ページ、もしくはページの画像などのリソースも取得するとなれば複数スレッド立ち上げたくなる気持ちもわかる。
DBの検索時に別スレッドで何かするってことはないだろ
まぁ複数人で使うプログラムに一人当たり何スレッドも使うとサーバーが死ぬけど
管理者一人だけが使うようなプログラムなら100スレッドだろうと使っても良いだろう 人間という応答が遅いくせに即反応してやらないとすぐにイライラしちゃうリソースがあってだな
UIとバックグラウンドはスレッド分けたい時もある
javascriptもそれができるようになったし Webサーバーではpthreads使えないよな
CLI専用
手動でコマンド実行された時か
定期的にコマンドを実行するバッチ処理内でなら使える
時間の掛かる処理を予めやっておいて
DBに結果を入れる
WebではDBから取得して表示するだけ ちょっとマジで聞きたいことがあるんだが、cgiからブラウザに対してCP932でHTMLが出力されている。
もちろんヘッダも正しく指定されている。
んで、そのHTMLの中に、
<IMG SRC="あいうえお.jpg"> などと言う日本語のファイルが指定されているわけだ。
その日本語のファイル名も、CP932だ。
んで、ご丁寧にブラウザが自動でURLエンコードしてくれるようなのだが、
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.jpg
となるのだ。これは "あいうえお.jpg" をUTF-8として解釈した時の文字コードだ。
俺としては %82%A0%82%A2%82%A4%82%A6%82%A8,jpg (CP932の文字コード)となってもらわなくては困る。
聞きたいことは2つで、これを解決するにはどうしたら良いか?
もう一つは、ブラウザごとの仕様によりこの挙動は違うのか?
の二点だ
よろしく頼む >>653
あっちこっちに同じ質問するなカス野郎!
なにがよろしく頼むだ
テメーは一緒悩んでろ PHPのソースからコメント取り除きたいんだけど、何かお手軽な方法ないかな
php -wだと改行もなくなっちゃうので、エラーを追いづらくなるから改行は残したい 正規表現で置換とか?
コメントを捨てる理由は良く分からんけど 皆さんはどうやってアクセスログなどを作成してるんですか? >>659
俺はアクセスログは作成しない
たぶんしないと思う
しないんじゃないかな
apacheやnginxにしかできないこともあるから アクセスログはサーバーが自動で作ってくれるからそれに任せてる >>660
>>661
参考になります。
ありがとうございました。 掲示板やチャットに書いた人のIPとプロバイダは保存してある >>663
当たり前だろう
保存してない完全な匿名掲示板なんて無いよ >>665
?
2chは最初からip全部記録してるよ
大昔から普通に逮捕者でてるでしょ 最初はしてなかったから運営者が責任とらされたんじゃなかったっけ ネオ麦茶思い出した
あれ以前の事件はもう覚えてないな 永久保存なんてしてんの?
投稿内容と一緒に保存してるだけで、いらなくなったら消してくでしょ 永久保存なんて現実的には無理だから求められないはずだが
何年間保存しろみたいな義務ってあるんだっけ?
うちのアクセスログ半年ぐらいで古いのから消えてるぞ見てないから知らんけど多分 GDPR的には永久保存はNG
アクセスログのIPも個人情報だかららしい GDPR「消せ」
日本の警察「出せ」
ってなったらどうすればいいの? GDPRはよく分からない
なんか具体的なことは書いてないらしいし
ログを永久保存しててもセキュリティのためだって言えば大丈夫? GDPRなんて無視一択だろ どこの誰だよって感じ
ここは秘境の地ジャップランドやぞ 治外法権やぞ error_log() とか fopen() とかあった気がする https://github.com/symfony/symfony/issues/8703#issuecomment-323608103
https://stackoverflow.com/questions/12378644/how-can-i-retrieve-the-current-error-handler
PHPのset_error_handlerってワケワカメな仕様だよね
・set_error_handlerはハンドラを一つしか設定出来ない。複数使うためには自分で元のエラーハンドラを呼ぶなど工夫が必要。上手くやらないと元のエラーハンドラは動かなくなる。
・現在のエラーハンドラを変更せずに取得する方法は無い。set_error_handlerが元のエラーハンドラを返すので、何か適当なエラーハンドラを設定後にrestore_error_handlerを呼ぶ必要がある。
エラーハンドラのネストはややこしくて
SentryがSymfonyのエラーハンドラを上書きしてしまい、動かない原因になった エラークラスに手をつけるとあっという間にぐちゃぐちゃになる
特に7.0で仕様が大幅に変わってからは何もしてない。全部FWに丸投げ error_get_lastとerror_clear_last何回も呼ぶほうが賢そう Apacheの減少が続く - 2019年2月Webサーバシェア
https://news.mynavi.jp/article/20190301-779845/
Apacheのオワコン化が止まらない >>682
otherが伸びてるグラフあるがなんなんだ? nginxのシェアをまるごととってるとなると
nginxのフォークかなんかと考えるのが妥当
というわけで調べたらNGINX Unitなるものがあるらしい nginxって静的コンテンツならいいだろうけど、
phpを使うならNginxの下にApache入れて処理してやる必要があるだろ
nginxはwebサーバーの元締めみたいなヤツだからシェアがあがるだけじゃね? すまんけどPHPについておしえてくれない?
PHPってどこで動くの?
ちなみにCGIは知っていて、
クライアントからサーバーにリクエスト(アクセス)があった場合、HTTPDが特定のプログラムを起動して、そのプログラムから出力を受け取る。
HTTPDは受け取った出力を必要なら整形してクライアント(ブラウザに返す)。
PHPの場合、どこで動いていて、どういうふうに呼び出されて、どういう風に出力を返すの? PHPマニュアルにSAPIについてちゃんと書いてある項が見当たらないんだけど, そもそもそういう項はないのか単にマニュアルの調べ方が悪いだけなのか
とりあえず ttps://www.slideshare.net/do_aki/php-sapi-zendengine3 この辺読んでみるのがええんちゃう lzma形式の圧縮ファイルを展開できるスクリプトって無いかな ajaxで複数のオブジェクトを同時に送ることって出来るの?
jsonデータとFormDataを同時に送りたいんだけど 掲示板等の機能を持った半登録制のウェブサイト作ってるんだが
ROMは誰でも出来て
書き込んだり新規トピックを立てようとするには垢登録が必要な仕様にしてるんよね
書き込んだ人のIPアドレスやプロバイダはどの様に記録したらいいかね?
ipぐらいなら平文でもええのかな?
キーワード使ってワードを暗号化出来る関数とかなんかある? >>692
application/jsonとmultipart/form-dataを一つのリクエストで送りたいのか?
contentTypeはリクエストにつき一つしか指定できないのにどうしろと
別々のリクエストにして両方のPromiseを待つなら出来るが >>692
↓な感じでまとめて送り、受信先でパースすれば?
[
{contentType:"application/json", content:"送りたいjson"},
{contentType:"multipart/form-data", content:"送りたいFormData"}
]
>>693
書き込みに垢登録が必要なシステムならログイン時にアクセスログの記録をしといて
書き込んだ時点では、アカウントのIDを記録しておけばいいだろう さして重要な個人情報でないIPやプロバイダをわざわざ暗号化する必要もないだろ
可逆じゃないと警察から照会があったときとかも意味もないし
そもそも暗号化のためにさくリソースが無駄
というか普通はhttpdのログにも記録される情報だろうそれ httpdはリクエストに対する記録しか残さないのでサイトの中で何をやっていたかは不明です IPや逆引きホスト名に関しては二重取りになり
しかもそっちのログは暗号化もなにもされてないってことを指摘してるだけで
さすがに投稿日時ぐらいは記録するのは想定してるよ phpやったことないんだけど、cgiとはどう違うの?
httpfとphpの関係ってどんな感じなの? アクセスしたURL見りゃ大体何やってたかわかるじゃん URLにhttpdの仕様なんて書いてなくね・・・? >>700
CGIはオワコン
リクエストの度にコマンドを実行する方式なので、遅すぎる
ApacheはWebサーバー自体にPHPモジュールを含んでいる
CGIと比べたらスクリプトの実行は速いものの
Apache自体のWebサーバーとしての速度はnginxなどに劣る
また、Webサーバーの中で動くので分離度が低く、セキュリティ上不安がある
FastCGIは両者のいいとこ取りみたいな感じ
一度立ち上げたプロセスとソケットで通信するようにして、プロセスを再利用可能にしてCGIの分離性を保ちつつ
それなりの高速さを実現した
この方式だとApacheだけでなく、nginxも使える 何で初心者お断りのスレで、phpやったことない初心者がいるんだよ
スレタイも読めねーのか? WSGIはWebサーバーとアプリケーションサーバーを繋ぐという点はFastCGIに似ているが、FastCGIは言語を問わないのに対し
WSGIはPython専用
FastCGIより上位の層にあり、抽象度が高いらしい
FastCGIが通信の仕様だけなのに対して
WSGIはワーカープロセスの制御も仕様に含むとか
そのため、FastCGIを利用したWSGI実装もある >ApacheはWebサーバー自体にPHPモジュールを含んでいる
Apacheがサーバーなんじゃないの?
Apache自体にPHPモジュールを含んでいるってこと?
モジュールを含むってどういう意味?
んでそれがなんで速いことになるの?結局インタプリタと同類だからcgiと同じじゃないの?
もしかしてプロセスが常駐してるの? >>705
前から思ってるけどphpくだスレがないからここに来るしかない
初心者お断りって書いても意味ないぞ >>709
あぁ板が違うのか
気づくわけねーだろハゲ PHPは設定が多過ぎて本番環境で動かす時の設定をどうすれば良いか分からない
セキュリティはともかく性能的にはどうチューニングする?
その設定で本当に速くなってる事はどう確かめる?
Webサーバーはnginxにしている 教えてください。
アップルのウェブサイト(https://www.apple.com/)のContent-Lengthをget_headers()で取得すると値が53394であるのに対して、
ブラウザでウェブサイトを表示してウェブマスターツールでContent-Lengthを確認すると8222になっているのは何故ですか?
変なことを聞いていたら申し訳ないです(´・ω・`) こちらの勘違いでした。
質問を〆ます。
ありがとうございました。 httpで接続するとphpは実行されるんだが
httpsで接続するとphpがそのまま表示されるんよね(´・ω・`)
これは何が問題なの?
初めてSSL化したからよく分からんとよね サーバ再起動したら上手く行ったわ(´・ω・`)
すまんな自己解決した 指定日から指定日までの「年月」一覧を
もっとも簡潔に角煮はどうしたらいいかな WordPress、PHP 5.2から5.5までのサポートを終了
https://news.mynavi.jp/article/20190322-793657/
> これで、WordPressがサポートされる最も古いバージョンはPHP 5.6となり、WordPressを利用する場合にはPHP 5.6よりも新しいバージョンを使うことが必須となる。
5.6もクソ古いんだからね切れよwwwwwwww サポート終了ってだけで別に使えなくなるわけではないんじゃね
あえて使えないようにPHP5.6からの関数やら機能やら使ってるのかもしれないが 5.6サポート切れた時、色々な中小企業のHPが見れなくなるのだろう >>732
それはphpのサポートだね
今回はwpのphp5.6に対するサポートの事だよ だからサポート切れた言語を生かすなっていいたいわけ そもそもサポート切るなよ
サイト運営者は一生アップデートしなきゃいけないのか?無理だろそんなの そうだよ
アップデートというか、数年に一回作り直しになる そうなんだよなあ
でも開発だけで保守を依頼せず放置のクライアントばかり
世の中にそういうサイトいっぱいあるんだろうな、そして攻撃されて流出やらやらかす
俺は知らんぞ そんな所はそもそもセキュリティパッチの適用すらして無い
意識の低いところだろ? ブログサービスなりグーグルサイトでもつかっとけよな 当面は大きなセキュリティリスクが見つかれば有志がパッチ作るだろう パッチ当てるのもアップデートするのも手間は変わらんだろ
有志とかいう非公式のパッチに変なコードが仕組まれていたらと思うと
とてもじゃないが公式が出すアップデートを適用した方がマシ >>741
日本人なら信用できるだろ?
未だにWindows2000とか日本人が非公式でパッチ出してるけど
余裕で信頼されてんぞw ■ このスレッドは過去ログ倉庫に格納されています