[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/10 10:46 / Filesize : 384 KB / Number-of Response : 1022
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はここに書き込みやがれ 12



1 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 12:39:39.75 ID:P0iZ4CYt0.net]
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 11
https://mevius.5ch.net/test/read.cgi/tech/1591334726/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured

515 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 10:50:19.40 ID:5Wbud5da0.net]
>>485
最後に

アップロード処理が管理者にしかできない = 第三者に変なファイルをアップされる心配がないのであれば、
<img src="img/abc/123.jpg">
で別にええのよw

img/abc/123.jpg というファイルパスを第三者に知られたくないなら、>>505の例のように「間にPHPをかまして出力」すれば良いってだけ


逆に、第三者に変なファイルをアップされる心配があるのであれば、「アップロード処理の際に(出力の時ではなく)」厳密なチェック処理をしないとダメ

それについては、>>466さんも紹介してくれている
https://qiita.com/mpyw/items/939964377766a54d4682
を読めばいい

・第三者が自由にファイルがアップロードできる
・アップロード処理の際に上記のようなチェック処理ができてない
・アップロードされたファイルへ第三者がアクセスできる

3つの条件を満たしているとセキュリティ的にヤバいよねってだけ
例えば、「任意のファイルを自由に読み書きできるPHPファイル」をアップロードしそれがそのまま実行できたらヤバいでしょ?
分かる?

516 名前:デフォルトの名無しさん [2021/07/28(水) 12:52:23.66 ID:9bJDIHUz0.net]
釣り質問にマジレスすんなよアホ

517 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 12:58:32.36 ID:pYNLf1nF0.net]
釣りレスですしw

518 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 16:52:40.91 ID:5Wbud5da0.net]
>>476
ゴミレスに埋もれて気づかなかったw

PHPの記述を
exec('ipconfig', $message);

exec('chcp 932 | ipconfig', $message);

に変えたら上手くいくと思う
932はCP932(SJIS)の事ね

519 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 16:54:11.72 ID:5Wbud5da0.net]

520 名前: class="reply_link">>>479
error_reporting(E_ALL);
ini_set('display_errors', 1);
$url = "https://f.irbank.net/files/8700/fy-profit-and-loss.json";
$json = file_get_contents($url);
var_dump($json);

ってやったらどうなる?
string(1676) "{"meta":{"type":"\u696d\u7e3e","item":{"\u5e74\u5ea6":["\u58f2\u4e0a\u9ad8",…
みたいなレスポンスが返ってこない?

とりあえず↓の行は要らんでしょ
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');

>>481
関係ない
PHPのバージョンぐらいは書いた方がいいが
[]
[ここ壊れてます]

521 名前:デフォルトの名無しさん [2021/07/28(水) 20:23:13.38 ID:jpPdNADXr.net]
>>507
それをあわせてファイルをチェックするのが
MIMEチェックをして画像を表示させる前に、画像ファイルである事を確認するってことですよね?
画像をecho '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('img/abc/123.jpg')) . '">';で表示して
MIMEチェックするのがそんなに難しいことなんですか?

522 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 21:08:58.35 ID:IWCDcnnv0.net]
>>510
どうもありがとうございます!
とても助かりました

523 名前:デフォルトの名無しさん mailto:sage [2021/07/28(水) 22:44:28.91 ID:5Wbud5da0.net]
>>512
MIMEのチェックが必要なのは、「第三者が」画像の「アップロードをするとき」の話ね
画像を表示させる前にそんなものは要らない

> MIMEチェックするのがそんなに難しいことなんですか?

PHPでアップロード処理した際、MIMEタイプは $_FILES['hoge']['mime'] に入るんだけど、
それは偽装できる
だからその値は信用せず mime_content_type() などで別途チェックしようってこと

当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい

つかさ、「自分(管理者)しか画像をアップロードしない」のか
それとも「第三者も画像をアップロードする」のか、
まずはそこをハッキリさせるべき

だから回答もめちゃくちゃになる



524 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 05:06:26.04 ID:Bm0Z0U0B0.net]
画像データの中に、ウイルスなどを入れてくるかも知れない

だから、本当に画像形式なのか、全バイト調べる必要がある

525 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 05:43:31.56 ID:4AVEtKuA0.net]
>>514
> 当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい

これ、管理画面からしか画像アップロードを許さないって状況を言ってるんだと思うけど、その場合もちゃんとチェックすべき
他の脆弱性と合わせて管理者権限でアップロードする手口があるので、このへんで手は抜かないほうがいい

526 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 09:05:26.98 ID:rmmFdFBh0.net]
自分で変なファイル置いちゃうかもしれんしな

527 名前:デフォルトの名無しさん [2021/07/29(木) 09:20:26.22 ID:zpf7CT600.net]
え?お前らSFTPで画像アップロードする時なんかもMIMEタイプのチェックやってるの?
管理者権限奪取されるような状況でMIMEタイプのチェックなんか意味ないだろw

528 名前:デフォルトの名無しさん [2021/07/29(木) 09:39:40.25 ID:rmmFdFBh0.net]
自分WPしらんから適当言ってる

529 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 11:01:03.28 ID:CBbl/boe0.net]
>>516
>>453に "wp-content/uploads/2021/07/7mgpH3K.jpg"
ってパスがあるからWordPressだよね

WordPressの管理画面からアップロードされたファイルは、
デフォのディレクトリ構成なら最終的には wp-content/uploads/ 以下の「公開ディレクトリ」に置かれる

なのでWordPressへその画像が表示される際も
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
という形になる

だったら>>453も単に
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
とすれば終わりの話だよw

でも、何がしたいのかよく分からんが、>>453ではわざわざ readfile() とか使ってるw

まぁでも、WordPress管理画面から自分がアップロードし公開ディレクトリに置かれたものなのだから、
readfile() でそれをそのまま出力しても問題はないさ

530 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 11:02:30.36 ID:CBbl/boe0.net]
>>520の話は俺より先に
ID:7+uo32oc0
さんが指摘してるし、>>494さんもそれをフォローしてる

そこへゴチャゴチャ言うのがいるから話がこじれる
453は「HTMLとPHPの役割分担すら理解できてないヤベー人」なわけで、
そんな人へゴチャゴチャ言っても理解できるわけがないのにさ

WPスレへ行けといくら書こうが無駄なのだし、
さっさと問題を解決しスレから居なくなってもらうのがベターかと

531 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 11:13:22.62 ID:WLwj6dDv0.net]
当人は自分宛レスに書かれた内容の三割も理解出来ていなさそう

532 名前:デフォルトの名無しさん [2021/07/29(木) 11:17:31.59 ID:HtmB+4p50.net]
セキュリティの一般論なんか持ち出すのがいけない

533 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 12:43:26.88 ID:Bm0Z0U0B0.net]
>>520
>だったら >>453 も単に
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
とすれば終わりの話

公開ディレクトリなのに、URL で書かないといけないの?
相対パスで書けないの?



534 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 12:51:10.23 ID:ELCmA1Vb0.net]
もう当人居なくなってるだろ

535 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 13:05:58.67 ID:k08R/6yd0.net]
>>521
ID:7+uo32oc0 と >>494 はワッチョイ見れば同一人物ってわかるよ
そして私だ!フォローthx!

あとね
ワッチョイ 532c-MYQi
ID:Bm0Z0U0B0
はRubyガイジなんでスルー推奨

536 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 13:14:38.56 ID:kQQSV7PN0.net]
こいつサイトに載せるバナーイラストをお絵描き板で個スレ立てて練習してるやつと同一かな?
pixivを超えるサイトを作るらしいぞ。だから第三者がアップロードする事に拘ってるんだと思うぞ。

537 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 15:46:28.70 ID:1U+sby820.net]
>>524
WPではアップした画像がWPを通して表示される時は絶対URLで記載される

538 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 18:37:55.60 ID:CBbl/boe0.net]
>>526
たしかに同一人物だ あまりにも口調が違うから気づかなかったw
Rubyガイジの件もサンクス これも気づいてなかった

>>528
だね
フィルタ使って 'attachment_link' や ''wp_get_attachment_url'
に対し絶対URLを相対パスへ変換するフィルタを適用すれば
相対パスに変える事もできるけどね

526が教えてくれたけど、524はRubyガイジみたいだから相手にしなくていいよ

539 名前:デフォルトの名無しさん mailto:sage [2021/07/29(木) 18:43:11.67 ID:CBbl/boe0.net]
Rubyガイジのレベルは>>483見ればお察しやねw
WordPressスレ見てみたけど、そっちにもRubyガイジが顔出してるしスレがまともに機能してなかった
そりゃこっちに来るわ

540 名前:デフォルトの名無しさん [2021/07/30(金) 15:35:03.64 ID:B9OLCwSG0.net]
2005年前後にに発行されたPHPの本がたくさんあります
バージョン4や5辺りです
以前はこれらの本を見ながら簡単なことをやったりしていましたがもう完全に忘れています
今、小さな店のweb予約システムをPHPで作りたいと思っています
今はPHPのバージョン7か8でしょうか
新規に本を揃えた方がいいですよね?
おすすめの本、勉強方法などあったら教えてください
スレチであれば誘導お願いします

541 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 15:41:02.56 ID:c+ndNg5Q0.net]
バージョン7.3以上がいいよ
残念ながら4や5はもう完全に化石

542 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 16:28:29.52 ID:7i2immr80.net]
PHPの本は半分くらい攻撃対策がページを占めてる印象

543 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 17:00:35.86 ID:UtQvC7c20.net]
>>531
本が必要なら買い換えるべき(最低限PHP7…できれば7.3〜対応のものを )
作りたいものがはっきり決まってるのはとても良い事

とにもかくにも、まずはローカルにまともな開発環境を作ろう
スレの質問を見てると、開発環境を作れていないであろう人の質問は色んな意味でヤバいw
開発環境を作るのははじめは面倒だと思うけど急がば回れ

※533はRubyガイジなので注意



544 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 19:29:14.24 ID:B9OLCwSG0.net]
どうせなら新しい8を勉強した方が効率いいかなと思ったんですけど、今使っているレンタルサーバがまだ8に対応してませんでした
7.3以上ですね、わかりやすそうな本を店頭で探してみます
予約システムの作り方とか似たようなものがないかも探してみよう

ローカルの環境開発、どの本にも書いてあったので昔入れてました
懐かしい
これも入れておきます
いつ完成するかわかりませんが久しぶりで楽しみです
アドバイスありがとうございした

545 名前:デフォルトの名無しさん [2021/07/30(金) 19:29:28.58 ID:r27NHL07r.net]
img.phpを用意して<img src="output_image.php?id=12123">
header.phpのbodyに<img src="output_image.php?id=12123">と追加したのですが表示されないようです。
output_image.php?idで画像を表示できるのでしょうか?

546 名前:蟻人間 mailto:sage [2021/07/30(金) 19:34:30.43 ID:GDRR8sIEd.net]
確認します。
img.phpというファイルはありますか?
output_image.phpというファイルはありますか?
output_image.php?id=...
に直接アクセスして画像は表示されますか?

547 名前:デフォルトの名無しさん [2021/07/30(金) 19:40:25.38 ID:r27NHL07r.net]
画像パスがupload.php?item=12123となっているのに対し
<img src="upload.php?id=12123">では取得できない気がするのですが、idから取得できるんでしょうか?

548 名前:デフォルトの名無しさん [2021/07/30(金) 19:46:25.67 ID:r27NHL07r.net]
output_image.phpというファイルを作って中に<img src="upload.php?id=12123">
header.phpのbodyに<img src="upload.php?id=12123">と記載しても表示されません

直接output_image.php?id=12123にアクセスしても表示されないようです

549 名前:デフォルトの名無しさん [2021/07/30(金) 19:58:25.74 ID:r27NHL07r.net]
wordpressの場合特殊なのか、idから画像をリサイズして表示するときに<php echo wp_get_attachment_link( 12123 ); ?>で表示されました。

テンプレートタグ/wp get attachment link - WordPress Codex 日本語版

550 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 19:58:58.68 ID:ScATWV4k0.net]
そらそうだろ

551 名前:デフォルトの名無しさん [2021/07/30(金) 20:00:25.98 ID:r27NHL07r.net]
いずれはwordpressではなくデータベース軸でサイトを立ててみたいので、output_image.php?id=...で
なぜ表示できないのかも知りたいんですが…

552 名前:デフォルトの名無しさん [2021/07/30(金) 20:09:34.89 ID:r27NHL07r.net]
<php echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('wp-content/uploads/2021/07/7mgpH3K.jpg')) . '">';?>

だと同じように表示されました。教えていただきありがとうございます。
第三者がアップロードするかどうかでセキュリティを考えるんですね、コメントしかりページナビしかりマイページ機能しかり。

553 名前:蟻人間 mailto:sage [2021/07/30(金) 20:34:44.87 ID:GDRR8sIEd.net]
WordPressはWPの作法に従わないと動かないことがあるよ。裏でCSSやら.htaccessやらJavaScriptやらが動いていて、実際の処理は隠蔽されてるから。



554 名前:デフォルトの名無しさん [2021/07/30(金) 21:45:55.50 ID:r27NHL07r.net]
>>544
ありがとうございます

555 名前:デフォルトの名無しさん [2021/07/30(金) 21:52:20.21 ID:r27NHL07r.net]
> 「不正な画像をアップロード」できるのも内部犯に限られることになる

XSS を利用して不正アップロードする手口が徳丸さんのとこで紹介されていました。
https://www.youtube.com/watch?v=FpCabifwhKg

WordPress なら外部から似たような攻撃でアップロードされる可能性があるので、プログラムレベルでも適切にアップロード対策をしておくべきだと思います。

このような回答が追加されていたのですが外部からも勝手にアップロードされる危険性はあるのでしょうか?

556 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 23:36:35.91 ID:1geFHcN20.net]
ありますよ。実際に自分はアップローダーからマルウェア仕込まれて
VPSサーバーを総入れ替え舌経験があります。
WordPress宛の攻撃は毎日あるし、できる対策は全てしたほうが良いでしょうね

557 名前:デフォルトの名無しさん [2021/07/31(土) 01:52:34.20 ID:v7hkUDSma.net]
この動画を見たところ検索フォーム?のXSS対策コードの記載漏れから不正コードを入力されて管理画面に侵入されたみたいですが

要するに第3者が侵入出来るような検索フォームやお問い合わせフォームやコメントフォームやマイページの対策を怠らない事で防げるということですよね?
自分のみがアップロードする場合は該当しないのでしょうか?

558 名前:蟻人間 mailto:sage [2021/07/31(土) 03:18:27.24 ID:ZYWMYotdd.net]
脆弱性は様々な枯れてない技術から発見されている。あのWPだってあちこちからゼロデイ攻撃が見つかっている。WP のテーマやプラグインにも脆弱性がある。度重なる更新や脆弱性に対応できないならWPを使うのをやめた方がいい。

パスワードセキュリティにも危険性がある。パスワードはセキュリティの基本であり、5文字程度の単純なパスワードはパスワードクラッカーで短い時間で突破されてしまう。攻撃者は性能の高い計算能力を持ち、世界中のどこからでも攻撃できる。パスワードは単純なのはダメ、短いのはダメ、憶測できるのはダメ。

あるいはソーシャルハッキングや電波漏れなどの未知のハッキング手法からも攻撃が成立することがある。

こうすれば絶対にハッキングされないという方法はないが、危険性が高いものを避けることは可能。

559 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 10:31:19.92 ID:fqpnvpaJ0.net]
>>548
WordPressの場合、自分は管理画面のURL変えてIP制限入れてますよ。
自分のみがアップロードなら、自分しか使えないIPアドレス制限した方がいいし、
ホスト名とか環境変数とか、そこまでチェックした方が確実だと思います。

ま、一番良いのはWordPress使わないことですけどね

560 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 10:46:33.80 ID:z/SvtBD30.net]
>>550
動画見ろよ
IPの制限無関係に投稿する仕組みの紹介だぞ

561 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 11:04:47.11 ID:JJoM48pY0.net]
わざとセキュリティホール作って、ほらね?危ないでしょ?ってアホかよw
まずWPに同じセキュリティホールあるかの議論が先だろw
無いけどw

562 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 11:34:42.98 ID:z/SvtBD30.net]
>>552
ユーザ投稿のプレビュー箇所とアップロード機能を持つ管理画面って,WordPressで頻繁に見るんだが?
それぞれに問題箇所があるとwebshell置かれて終了!の可能性を指摘する動画だけど、理解できてる?

563 名前:デフォルトの名無しさん [2021/07/31(土) 11:37:50.11 ID:BUpo1U8M0.net]
プログラムで例えば4×4のマップがあった場合、4という数字は私は格子点数と呼んでいますが、皆さんは何と呼びますか?



564 名前:デフォルトの名無しさん mailto:sage [2021/07/31(土) 18:56:05.10 ID:JJoM48pY0.net]
>>553
一連の流れでセキュリティの指摘をしたわけではなく、ただ動画を宣伝したかっただけなんですね!
理解できましたw

565 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 10:21:18.11 ID:JwyUb7gK0.net]
>>536
Oh...
それ、単に「例」として出しただけなのでw

例えば(あくまでも例え話ねw)
ID | 画像のパス
1 | hage/abc.jpg
2 | fuge/345.jpg
みたいにデータ管理してたとして、

id=1 を渡せば hage/abc.jpg を取得できるようにすれば結果的に
output_image.php?id=1
とすれば、「hage/abc.jpg」を表示できるでしょ?ってこと

それを、
output_image.php?path=hage/abc.jpg
みたいに直接パスを渡すような設計にしてると、あなたのレベルでは危ないよってだけ

566 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 10:45:18.84 ID:JwyUb7gK0.net]
>>546
> 外部からも勝手にアップロードされる危険性はあるのでしょうか?
そりゃ「可能性」はあるよw
人間が作るものにバグ(脆弱性)がないものなんてない

で、>>546にはその動画の意味は理解できる?
理解できてないよね
理解できてないのに、何をどうやって「対策」するの?w

その動画に指摘されている脆弱性は、「プラグインのXSS脆弱性を悪用した攻撃」なので、
対策といったところで、あなたのレベルでできるのは「WP本体やプラグインは常に最新版を使う」事ぐらいだよ?
※その動画の攻撃例は管理画面にIP制限なんかしても無駄ですw

結局、「画像は546本人しかアップロードしない」んだよね?
だったら、「アップロードした画像には問題ない」事を前提に話を進めようよ

546は、「HTMLやPHPの基礎がないままWordPressから始めた」のがいけない
基礎がガタガタなの
そんな人が細かい事を気にしたところで、話は前に進まんよ

567 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 10:50:01.92 ID:JwyUb7gK0.net]
>>552
>>555
546の動画の例は、WordPressでECサイトを構築する際の「超定番」プラグインEC-CUBEのXSS脆弱性を悪用したもので、
「実際に悪用事例も出た」ものだけどね…
そんな事すら理解できないなら、横からしゃしゃり出てこずに黙っておけw

568 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 10:59:23.86 ID:JwyUb7gK0.net]
>>546
>>557に補足しとくと、WordPress本体・プラグイン・テーマファイルの致命的な脆弱性を悪用され、
WordPress権限から自由にファイルのアップロード・編集が可能になった場合、
サーバー内の画像をPHP経由で出力する際のセキュリティ(笑)なんか、いくら考えても無駄ですw

その点については>>518さんが指摘している通り

例えるなら、「ヘルメットを被っていたら快速電車にダイブしても大丈夫だよね?」って聞いてるみたいもんw

だから、自分しかアップロードしない画像ファイルは安全であるという前提で、話を進めようよ…いや頼むからそうしてくれw
てかRSSの時もそうだけど、たったこんだけの事にどんだけ時間かけてるのよw

569 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 11:36:09.87 ID:CDsmjzwf0.net]
いいから構うやつもまとめてWPスレ行って帰ってくるなよ

570 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 11:55:16.38 ID:jY8DN4600.net]
自演ですし

571 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 14:06:37.03 ID:LY8fDkppd.net]
最初から自分しかアップロードしない前提なのにどんだけレスしたら気が済むの、このセキュリティガイジ

572 名前:デフォルトの名無しさん mailto:sage [2021/08/02(月) 14:39:06.84 ID:nA0UljqA0.net]
セキュリティガイジは別人だろ
ガイジなのは質問者、それに対しセキュリティ全波の話を持ち出してる人、煽るしか能のない人

573 名前:蟻人間 mailto:sage [2021/08/02(月) 14:51:48.05 ID:LkFRX9kvd.net]
>>554
普通にサイズでよくね?



574 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 15:31:27.53 ID:QhYrANy70.net]
Array(a1,b1,c1,d1,...)とArray(a2,b2,c2,d2,...)を足し算して、
2次元配列にする時って、どうすればいいでしょうか?

$x[0]がArray(a1,b1,c1,d1,...)の時、
$x[1] = $s;としたら、
$xがArray(a2,b2,c2,d2,...)で上書きされてしまいました。

575 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 15:33:03.22 ID:QhYrANy70.net]
$s=Array(a2,b2,c2,d2,...); です。

576 名前:デフォルトの名無しさん [2021/08/04(水) 15:44:34.90 ID:QhYrANy70.net]
foreach とか for とか使うしかないでしょうか?

577 名前:565-567 mailto:sage [2021/08/04(水) 16:12:58.96 ID:QhYrANy70.net]
foreach とか for で、解決しました。

578 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 16:36:34.91 ID:BE8GLseK0.net]
Ruby なら、zip で複数の配列を、組み合わせられる

ary_1 = [ 1, 2, 3 ]
ary_2 = [ 10, 20, 30 ]

p tmp_ary = ary_1.zip( ary_2 )
#=> [[1, 10], [2, 20], [3, 30]]

p results = tmp_ary.map{ |a, b| a + b }
#=> [11, 22, 33]

579 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 19:56:28.27 ID:JeeF5Fq/0.net]
ゴミのような流れに草w

580 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 20:48:03.21 ID:nRiwNpi/0.net]
相変わらずRubyガイジがPHPのスレを荒らしに来るw

581 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 00:28:51.82 ID:F8+XC2Dv0.net]
PHPで接続を明示的に切る方法ってある?

本処理後、後処理としてDBの整理を行うのだが、
本処理と後処理が同程度の重さになるので、可能であればTCP接続を明示的に切りたい。
そうすればブラウザが確実に処理を始めるので、クライアント側の体感速度が上がることを期待している。
とりあえずfush()はした。出力バッファは使ってないので、ob_xxxxはやってない。
他に何かある?

582 名前:デフォルトの名無しさん [2021/08/05(木) 00:42:12.36 ID:N2Iw/qnR0.net]
意味不明

583 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 00:45:52.55 ID:JVVnzoun0.net]
DBがクローズされているなら、PHPへのアクセスは関係ないんじゃ?
というか、設計がおかしくない?



584 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:01:42.06 ID:F8+XC2Dv0.net]
ああすまん、書き方が悪かった。
こちらはPHPの初心者なので、そちらが想定しているような高度なことはしていない。
「TCP接続」をDBとの接続だと想定したのだと思うが、こちらはSQLiteだ。

クライアント(ブラウザ)からのアクセスで、SQLiteを操作してhttp出力を行う。
その後、ユーザーに対しての追加の出力はないので、ここでユーザーとのTCP接続(=http接続)を切りたい。
(確かGoかNodeだとこれが出来た)
さらにその後、後処理を行うのだが、これが本処理と同じ程度に重い。
そしてexitで終了する。

ブラウザがexitにてTCP接続が切れてからパースを開始すると、体感2倍重くなってしまう。
flushでデータを全部送りきることは出来るが、
ブラウザはパースしないと全部来たことが分からないので、fulsh後にすぐ動くことは期待出来ない。
http接続が切れれば、それ以上のデータはないと確定するので、パースを確実に開始する。
だからこれを早めたい。

何か明示的に出来る方法ってある?

585 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:28:56.20 ID:qQkilq/Na.net]
404のっとファウンドなどのエラーページを自作しる

586 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 01:43:30.62 ID:JVVnzoun0.net]
>>575
クライアントに応答を返すPHPは、応答を返したら、
後処理を行うPHPを起動し、自身はその終了を待たずexitする

587 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 03:48:16.16 ID:9Ap3lZssd.net]
>>575
〜ここまで本処理
// 結果を待たずに次の行へ進む非同期コマンド
exec('php 後処理.php > /dev/null &');
exit;

もし後処理.phpに何かパラメーターを渡したい場合は
exec('php 後処理.php パラ1 パラ2 パラ3 > /dev/null &');

受け取る側の「後処理.php」の中で$argvに配列として格納されてる

588 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 06:36:47.33 ID:F8+XC2Dv0.net]
>>577-578
なるほど、マルチプロセスだから根本的に考え方が違うんだな。ありがとう。
(だとすると、途中で明示的に接続を切れたのはNodeか?)

マニュアルページが完全にstackoverflow並のtips集になっていることにも驚いた。
https://www.php.net/manual/ja/function.exec
(やたらWindowsについての言及が多いが、意外にIIS上で動かされてるのか?)

見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい。
そしていきなり環境依存コードを注入するというのはプログラマとしては頂けない。
ここら辺のノリがPHPの嫌いなところだ。
プログラマ向けに作ってないから、プログラマの常識でやってると変に嵌ったり、見落としたりする。
とはいえ、便利なのは事実だし、所詮スクリプトだと割り切るのも必要なのだろうけど。

とりあえずの問題は、開発環境がローカルホストのXAMPP(つまりwindows)で、
実行環境がレンタルサーバー(つまりLinux)ってところだが。

まあ、いずれにしてもありがとう。
この質問には確かにexecが正解のように見える。

589 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 06:50:31.72 ID:Sb1zsMiv0.net]
>>579
ローカルコマンド叩くのに環境依存がない言語なんてあるわけ無いだろ
嫌いになるのは勝手だけど、アホな理由で嫌いになるなよ

590 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 07:24:02.52 ID:F8+XC2Dv0.net]
>>580
だから発想が『プログラマとしては』おかしいんだよ。
少なくともNodeでもGoでも、環境依存無しのコードを記述出来る。
PHPでは出来ないのに、それでも良しとされてる。
そういうところが嫌いなんだよ。

覚えだが、上記の通り、明示的に切れたのは多分Nodeだ。
これはそもそもシングルスレッドだから、PHPのようにスクリプト終了=接続終了とは出来ないから当たり前だが。
そしてGoなら内部プロセス(goroutine)で、となる。もちろん環境とは依存しない。

PHPでも、session_write_closeと同様に、例えば write_close() というコマンドを作り、
そこで接続終了、それ以降の出力は全部捨てられます、とすれば、全く問題なく環境依存無しに出来る。
だからプログラマが主導して開発をしていればとっくにそうなってるはずなのに、
現実としてそうなってないから、色々無駄に戸惑う。だから好きにはなれない。

何だかんだで意外とNodeが蔓延っているのは、ここら辺の理由もある。
今回の使途ならJSのsetTimeoutでの実装の方がプログラムとしては断然美しくフィットする。
PHPで書くと、こんなコードにしかならないのかよ、と本当に愕然としてしまう。
腕が良くてもまともなコードを書けないんだよ。
それは上記の通り、PHPの開発の方向性が間違ってるからだ。
(とはいえ例の三項演算子についてはPHP8で修正されてるようだが)

まあとにかくだ、プログラマとしては禁忌に近い「環境依存コードの注入」を普通にやらせるのは異常だし、
そんな状況が放置されてること自体も異常なんだよ。
だからプログラマがPHPを好きになることはないと思うよ。
PHPを好きな奴は、他言語をまともに使えない奴だけだと思う。

591 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 07:52:13.16 ID:Sb1zsMiv0.net]
>>581
んなアホなことやりたいなら、phpでWebサーバ書けばいい
メジャーなのはないけど、ふつうにGitHubにも転がってる

そもそもフィトするもんが別にあるんだったらそっち使うのがエンジニアだぞ

592 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:23:37.05 ID:F8+XC2Dv0.net]
>>582
だからその発想がおかしいんだよ。フィットしてるなんて到底言えない。

PHPは「できればいい」「動けばいい」で済ませる初心者〜中級者の感覚に合ってる。
だからその層には絶大な支持を受けるが、上級者には支持されない。
実際、PHPが「プログラミング言語として」素晴らしいなんて言ってる上級者は世界中でも誰一人もいないだろ。

connection_closeとかを用意すればいいだけなのに、
外部コマンドで自己ファイルをバックグラウンドプロセスとして起動する、なんて解は、頭がおかしいレベルだ。
自宅から歩いて3秒の場所に自動車で行く、に近い。

以前は「XAMPPなんて捨てろ。どうせ本番環境では動かないし、XAMPPで開発する意味はない」とか言ってる奴も居たが、
実際はこの辺の、それが環境依存コードだと理解出来ないレベルの初心者が勝手にやらかしまくってるだけだと思うよ。
そしてその意味も分からず、「XAMPPなんて捨てろ」だけ真に受けた初心者が、
例えば>>394みたいに、右も左も分からないのにリモート環境で開発する、みたいな、余計におかしな事をやらかす要因となってる。

そしてその根元は、PHP自体に落とし穴がありまくるからだ。
なんでそこで環境依存コードを注入するしか解がないの?というね。

が、まあ、parallelとかphtとかはここら辺の対策用なのかな?
それにしても connection_close とかの単純な解の方が断然いいが。

593 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:42:00.19 ID:Sb1zsMiv0.net]
>>583
使ってる方からするとWebサーバレベルのハンドリングを意識しなくて良いレベルで抽象化されていることが使いやすいし、不足箇所は最近だとフレームワークが補完してくれている

ところで、支持してない上級者って何?
サーバサイド言語として、phpが必要ないって言っている人がいる?
普通に用途が合えばphp選択するのがエンジニアだと思うけど?



594 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:50:37.83 ID:F8+XC2Dv0.net]
というか、思うにこれはPHPだと「出力用」と「DB整理用」のphpを別にして、
「DB整理用」は別にcronで叩く、というのが一般解なのかな?

これ自体も外部依存しているのでよい解ではないが、
ここまで蔓延っているPHPがこの辺の「普通にやる処理」を上手く記述出来ないのもあり得ない。
だとすると、現実的にはこの解なのだろう。

とはいえ、最安のレンタルサーバーだとcronは使えないし、
纏めて整理する時に命中したらその時だけ奇妙に遅くなるわけで、
出来ればマメに整理しておきたいのだが。

595 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 08:55:46.01 ID:yR6UN7xmd.net]
>>583
〜ここまで本処理
//接続が切れてもスクリプトを実行させる
ignore_user_abort(true);
// メッセージ表示ページへ飛ばす
header('Location: 本処理完了しました.html');
flush();
ここから後処理〜

環境依存使わないなら、こんなんでどうですか?

596 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:02:59.57 ID:e8dh7hYU0.net]
>>583
ソースもないのに誰一人いないとか断言しちゃうから、だらだら長いだけで説得力のない空っぽな主張に見えちゃうんだぞ

お前さんの主張を支持する上級者は誰一人いないw

597 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:24:21.23 ID:F8+XC2Dv0.net]
>>584
> 不足箇所は最近だとフレームワークが補完してくれている
では今回の connection_close なり write_close が出来るフレームワークを紹介してくれ。
無いだろ。
PHPで出来ないことは、PHPで記述したフレームワークでも出来るはずがないからだ。
(とJS同様に思ってるんだが、PHPの場合は例えばC++で記述されててPHPをDSLとして採用してるだけ、
みたいな実行環境形のフレームワークがあるのか?
それがapacheだnginxだ、みたいな状況ではあるが)


> サーバサイド言語として、phpが必要ないって言っている人がいる?
居ない。
しかし、PHPは「素晴らしいプログラミング言語だ」と言ってる奴も居ない。
それは君も知ってるとおり、色々グダグダ過ぎるからだ。今回も然り。
他言語だと楽に美しく実装出来る事が、出来ない。いちいちストレスだ。
(とはいえRust/Go推しの連中もどうかしてると思うが)

> 普通に用途が合えばphp選択するのがエンジニアだと思うけど?
それはその通り。だから俺も今回はPHPを選択している。
ただこれは「プログラミング言語として」ではなく、「実行環境含めて」だ。
今回は「無料レンタルサーバーでも動く」事も重要な為、今のところPHP以外に選択肢がない。
技術的には、サーバーレス+Nodeが一番フィットし、つまりherokuなのだが、
あれは無料だが海外鯖なので見送りにしてる。
サービス提供先は主に国内なのにいちいち海外鯖では無駄に遅くなるから。
そしてNodeの無料鯖が国内にも広まるのを待っていたのだが、これは今のところ全然なさそうだ。

とかやってるうちに他状況も整ってきたから、しょうがないからPHPで本格的に書くか、と諦めたわけだ。
あと、Nodeが数倍速いのも事実なのだが、どうせ鯖を借りる側からすれば、
値段当たりの処理能力なら実はVPS+Nodeもレンタルサーバー+PHPも大差ないのかも、という気もしてきてる。
この辺も諦めにつながってる。とはいえ、どのみちNodeでも書く羽目にはなりそうなのだが。 []
[ここ壊れてます]

599 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:27:08.25 ID:Sb1zsMiv0.net]
>>588
お前のやりたいことは、Jobのキュー登録だろ
普通にあるわ

なんで、connection_close なり write_close にこだわらないといけないんだ?

600 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:33:30.26 ID:F8+XC2Dv0.net]
>>586
それは動かないだろ。
本処理で既にheaderとbodyは出力してる。
だからその後に header('Location')はアウトだ。

そして仮に動いたとしても、いちいちLocationで飛ばすってのも余計におかしい。
今現在の、結果的にブラウザが反応しないかも、その場合は通常より倍の時間がかかります、の方がまだマシだ。

ここらへんの、ちゃんとした解がないから余計なことで遠回りにやる、ってのもPHP界隈が嫌いな理由だ。
そういうのは初心者から中級者にクラスアップしてきた連中が俺ツエー的にやりたがるのだけど、
そういうのが多すぎて、PHP界隈はウザイ。
ただ逆に言えば、そういうことをしたいレベルの奴にとっては「俺カッケー」が出来るから、大受けする。
だからPHPを嫌いな人は多いが、廃れることもないだろうね。新規参入者はいくらでもいるから。
ある意味初心者ホイホイな面はある。
(ただしプログラマになる為の教育としてはかなり最悪だが)

601 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:37:34.01 ID:F8+XC2Dv0.net]
>>589
あるならそれを教えてくれ。PHP.net上のurlだけでいいから。
jobで出てくるのは The GearmanClient class だけだが、さらっと見た限りなんか違うっぽいし。

というかね、PHP.netは本当に出来がいい。
あれだけは他言語も見習うべきだよ。

602 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 09:41:54.34 ID:Sb1zsMiv0.net]
>>591
ぐぐればLaravelが出てくるだろ

素のphpでやりたきゃ
https://medaka.5ch.net/test/read.cgi/php/1557652864/
なら別海が出てくるかもな

603 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:14:26.57 ID:F8+XC2Dv0.net]
>>592
LaravelはPHPで書かれてるのだから、素のPHPで出来ないことが出来るはずがないだろ。
と思ってるのだが、この認識が間違ってるのか?
まあ、導入する予定はないが、見てみるよ。


Webプログラミング板のスレはさらっと読んでみたが、ぶっちゃけここと大差ないような。
まあ、ここで一通り終了したら向こうでも聞いてみるかも。

なお、俺はプログラミングの初心者ではないが、PHPに関しては初心者だ。
一通りも知らないからPHP.netをいちいち引きながら書いてる。
それでいちいち、「他言語ならこうだけど、PHPならどう書くの?」になるわけ。



604 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:15:03.38 ID:jTl1oJKL0.net]
要は「非同期処理すればいいだけ」の話なのだが、ID:F8+XC2Dv0 はLinuxができない人?

だってさ、Linuxではコマンドの最後に「&」をつけるとバックグランドジョブになるのだから、
「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん

で、開発環境はDockerやVagrantで作ればいい
PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語なのだから、別にそれでいいじゃんw

PHPがどういう思想から生まれた言語なのかは以下のインタービュー記事を読むといい
https://gihyo.jp/news/interview/2010/rasmus

例えばNode.jsはシングルスレッド・シングルプロセスなのだから、入出力関連の処理を非同期で行ったりと設計思想からPHPとはまるで違う
1つの言語に固執せず適材適所で言語を使い分けるのがプログラマのなのだから、お前みたいな書き方をしてたら「だったらPHP以外の言語でやれば?」って思われるだけだw

ちなみにPHP8.1以降では「Fibers」が実装されて、非同期処理を綺麗に書けるようにもなるんだけどね
https://php.watch/versions/8.1/fibers
PHPってここら辺がすごい柔軟 良いと思った仕様はどんどん取り入れる

とにかく、グダグダグダグダとうるせぇんだよお前はw
自分の頭が固いだけなのに仕事ができると「

605 名前:勘違いしている自称上級プログラマ様(笑)」ってのが、現場で一番タチが悪い人間なのは間違いない
固くするのはチンコだけにしておこうな?
[]
[ここ壊れてます]

606 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:21:45.83 ID:F8+XC2Dv0.net]
>>592
あ、すまん。訂正。
laravelをさらっと見たが、dockerで導入してるところからして、俺
が想定していたJS的なフレームワークとは違い、これは実行環境形のフレームワークだな。
Job管理もあるのだろう。これはこれから読む。(とはいえ時間はかかるが)

607 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:24:19.91 ID:jTl1oJKL0.net]
Rubyガイジといい、なんでガイジ(正確にはガイオヤジかw)ばかり湧くんだろうなぁ
夏だからかw

608 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:24:44.74 ID:F8+XC2Dv0.net]
>>594
> 「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん
理解してないのお前だ。俺は「言語を問わず」ではなく、「実行環境依存」なのを問題視してる。

まあお前レベルの奴がグダグダ言ってくるところがPHP界隈の嫌いなところだよマジで。

609 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:33:36.93 ID:5AKWeG2e0.net]
このガイジLaravelスレでバカにされているガイジだろw
無能で仕事もしたことが無いレベルw

610 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:49:57.76 ID:jTl1oJKL0.net]
>>597
だから「開発環境はDockerやVagrantで作ればいい」と書いた

とにかく質問は解決しただろ?
だったらPHPスレに居座る必要もない

WPガイジ(こいつも相当頭が固いw)といい、俺はサッサと質問を解決しガイジにお帰り頂きたいだけだ
繰り返すが固いのはチンコだけにしとけw それといももうチンコも勃たない歳か?w

611 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:51:05.04 ID:F8+XC2Dv0.net]
>>594
ラスマスの記事を読んだ。まあ想定どおり。
これはWeb上のオープンソース開発、つまりJSやRustも同じ事。
それらに比べてPHPはポンコツ過ぎ。

ちなみにfiberが欲しいわけではない。それも「歩いて3秒の場所に自転車で行く」に近い。
俺がやりたいのは、 fclose(/dev/stdout) だよ。
ただまあ、PHPがラスマスの言うとおり勝手に開発された機能の団子なのなら、
俺が勝手にCのコード書いて送れば採用されるのかな?
精々10行程度で実装出来るから送ってみてもいいんだけどさ。

あとそれ、「PHPは柔軟でスゴイ!」ってのも、
最近よくいる「俺が使ってる言語スゲー=俺スゲー」系の馬鹿だから止めとけ。
他言語で既に使えてる便利機能が今更採用されたところでスゲーと思えるのは明らかに信者でしかない。
第三者なら「ようやくかよ」でしかない。

612 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 10:57:59.07 ID:kPeKr//s0.net]
ID:F8+XC2Dv0
質問に非同期って単語が出てない時点でお察しですな
PHPへの噛みつき方もテンプレ過ぎて10年前にタイムスリップしたかと思ったよ
加齢臭のするオッサンだろうな

613 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:01:32.69 ID:F8+XC2Dv0.net]
>>599
> だから「開発環境はDockerやVagrantで作ればいい」と書いた
だからその解も本来は間違ってるんだよ。それは、

実行環境依存のコードしか書けないから、それぞれの実行環境を毎回用意してそこで開発しろ

なわけだろ。それはJavaが目指した「Write once, run anywhere」でも全然無いだろ。
まあ実際はともかく、そもそもプログラミング言語はOS上のレイヤだけで動いているのなら、こうあるべきなんだよ。
そしてJSとか他言語はそうなってる。
PHPはその努力もしてないから駄目なんだよ。

その、「間違った解を正解として誇らしげにドヤる」のも、
典型的な「初心者から中級者にアップしたての馬鹿」がやることで、おまえはまさにそれだよ。
実際PHP界隈はそういうのが多数派で、それが問題視されることはないのだろうけど、それ自体が問題だよ。
それでは生産性がまるで上がらない。まあこれも理解出来ないのだろうけどさ。



614 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 11:04:37.37 ID:/R94gyIjd.net]
>>590
あたしは575の提案をして、環境依存に難色を示されたので、代替提案をしただけなのに、おかしいだろ

615 名前:ニか、ダメだとか、あっちのほうがマシだとか、なんでそんなに上からなんですか笑

既にbody出力済みという前提も無かったし。

なるほど、でもできればリダイレクトはしたくないです。とだけ返事すればいいものを。

リダイレクトNGなら、更に別の提案もあるんだけど、萎えましたです。
[]
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<384KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef