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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cfe8-+65u)
垢版 |
2018/11/28(水) 17:08:46.02ID:Nb5yTkdM0
PHPに関する質問スレです

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

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
492デフォルトの名無しさん (ワッチョイ 7aad-HwVO)
垢版 |
2019/08/22(木) 23:13:57.14ID:erkZnaOI0
>>491
せめてなにを実行してるくらい書かないと誰にも伝わらんぞ
パーミッション関係だと思うけども
2019/08/22(木) 23:31:59.91ID:A5RZDSc30
>>492
exeファイルを実行しています
パーミッションを疑って、Xサーバー側にアップしたものを全部777に書き換えたんですが動きませんでした
2019/08/22(木) 23:47:20.75ID:9/SBo+Lw0
>>493
exeファイルって何?サーバーの既存のコマンド?
2019/08/22(木) 23:47:49.02ID:cTorNwQs0
Xサーバって X window のじゃなくてレンタルサーバのことなのか。
それは置いといて、exec エラー126 で検索すると答えっぽい情報があるよ。
実行ファイル名をフルパスで書けばいいとか。
試してないけど。
2019/08/22(木) 23:55:42.57ID:9/SBo+Lw0
XサーバーってUnix環境だと思うから、その環境で動かせるって事がまず必要だよ
もしかしてWindowsで動作するファイルをアップロードしてない?
2019/08/22(木) 23:59:05.94ID:A5RZDSc30
>>494
いえ個人が作ったexeファイルです

>>495
それも
echo __FILE__ ;
でフルパス確認して、フルパス表記で実行したんですがエラー126のままで・・・

フルパスって
exec ("/home/hogehoge/xxxxx.com/public_html/hogehoge2/xxx.exe", $output, $error);
var_dump($output);
var_dump($error);
こういう表記でいいんですよね?
2019/08/23(金) 00:08:16.03ID:R6Gtd6JR0
>>496
してました・・
フリーの実行プログラムを使ってるのですが、
一応Unix用のファイルも配布元が配布していて
そっちを使ってもエラー126になります・・・
2019/08/23(金) 00:14:11.54ID:qfZoy6uT0
コマンド叩いて動くかまず確認しなさい
2019/08/23(金) 00:29:11.19ID:g5amacC60
>>498
ユーザーがアップロードした実行プログラムは動かせないと思う
phpやperlのスクリプトなら動作するようなので
そういうものを用意するしかないと思う
2019/08/23(金) 00:40:04.55ID:R6Gtd6JR0
皆さんありがとうございます
根本的に無理ぽな感じですね
一人で煮詰まっていましたが、いろいろ指摘をもらってまた頑張ろうと思います
2019/08/23(金) 01:41:01.56ID:TB/5V8Dm0
ちなみに何をする実行ファイルなの?
2019/08/23(金) 11:24:49.44ID:yZ+ijObJ0
一般的に、鯖側でexec可能になると悪意のないプログラムでもミスで鯖全体を殺してしまうリスクがあるので
鯖屋ではexecは認められない

はずよ
今時は知らんけど
2019/08/23(金) 14:13:06.13ID:R6Gtd6JR0
最後に
Unixで実行可能なファイルで、フルパスで、パーミッションの実行権限付与したら
いけました!
4日間悩んでたのでとても嬉しいです
どうもありがとうございました!!

>>502
複雑な数値計算をするプログラムです

>>503
そうなんですね今後使えなくなったら困るな〜
2019/08/23(金) 14:40:43.57ID:yZ+ijObJ0
>>504
xserverでは一応、負荷かかったら制限するかもと書いてるので
その辺注意しとけば大丈夫そう
506デフォルトの名無しさん (ササクッテロラ Sp5d-x+Pl)
垢版 |
2019/08/29(木) 08:48:42.39ID:3m6UWwTfp
phpとかプログラム言語じゃない、ど素人向け
2019/08/29(木) 09:33:06.07ID:eAc9JexPp
ど素人がよくそう言ってるの聞くけどプログラミング言語だよ
508デフォルトの名無しさん (ワッチョイ 9b93-PkBi)
垢版 |
2019/08/31(土) 00:15:45.15ID:OzmC0qXX0
って玄人気取った素人が言ってるけど実際プログラミング言語だよ
2019/08/31(土) 00:40:29.28ID:I1GVoNnD0
それで飯を食っているなら玄人ってことにしてあげて
2019/08/31(土) 01:43:38.02ID:xrNrB7Pcp
ランク2多相もGADTもない言語はプログラミング言語じゃない、ど素人向け
2019/08/31(土) 10:51:06.08ID:8OUIM1e40
アセンブリ言語はどうなる
2019/08/31(土) 11:22:22.84ID:I1GVoNnD0
アセンブリはど素人向けなんだろうな
2019/08/31(土) 17:26:18.88ID:y90kZfvt0
煽りが低レベルすぎて
HTMLがプログラム言語じゃないとか言ってるやつと同レベルだな
俺の考えたプログラム言語の定義なんてどうでもいいっす
2019/08/31(土) 20:12:36.71ID:xrNrB7Pcp
いやそんなのよりも、PHPなんてプログラミング言語じゃないって言ってるありがちな初級者と同レベルの煽りなんだと思うけど
2019/08/31(土) 20:47:12.99ID:rDlgaGGg0
HTMLはプログラミング言語ではないけどPHPはプログラミング言語です
2019/09/01(日) 01:42:35.50ID:oQ9sDP4c0
重要なのはそこじゃない
ドヤ顔でしょうもない主張するところ
2019/09/01(日) 18:47:04.65ID:pi8n90ik0
>>513>>515
プログラム言語には変数という概念が必要。
この定義に従うと、PHPはプログラム言語だが、HTMLはプログラム言語ではなくマークアップ言語。
2019/09/01(日) 18:56:01.44ID:be8Xi7zB0
FORTHに変数ってあったっけ?
2019/09/01(日) 19:24:54.50ID:L/37ZEtD0
HTMLはWEB屋がプログラマーを自称するための鉄板ネタやぞ
2019/09/01(日) 19:26:15.32ID:dY+gxW9G0
HTMLは演算をされない大きな変数だ
2019/09/01(日) 20:03:49.25ID:2ExHr6mca
phpできない俺からすれば、if使えてる時点で立派なプログラム言語だと思うけどなぁ。
2019/09/02(月) 02:35:19.10ID:bVR0oMnG0
>>519
HTMLというよりJS(中身はjqueryみたいなのを使ったコピペ)じゃなくて?
2019/09/03(火) 08:37:44.27ID:+M/fA+P50
HTMLはチューリング完全じゃないからプログラミング言語じゃないな
HTML+CSSはチューリング完全だとか
2019/09/04(水) 02:23:04.72ID:9ku/gwG+p
プログラミングのために作られてればルログラミング言語だよ
2019/09/04(水) 02:48:53.01ID:tMaJNHAd0
プログラミングのために作られてればエログラミング言語だよ
2019/09/04(水) 21:58:33.15ID:8xuaC0PC0
初学者です
たとえば「ブログ」ページの「php」カテゴリーの「2」ページ目を表示したい場合、
URL(略~index.php? content=blog &category=php &page=2)
のように、GETメソッドでリンクから送った変数を取得していく方法でよいのでしょうか?
一応表示は出来るのですが、条件をつけるたびにどんどんURLが長くなっていくのが気になって
何か他にもっとスマートな方法があったりします……?
2019/09/04(水) 23:00:10.33ID:LjVvm2Gp0
クエリじゃなくてパス(例: /blog/php/2)にすればいいんじゃない
あと普通はblogは独立したアプリになると思うから、/index.php?content=blog よりは /blog.php or /blog/index.php の方が自然
2019/09/05(木) 21:12:53.07ID:NNGkGktH0
ありがとうございます
むむむ、WordPress的にコンテンツブロックを入れ替えられるようにするべきなのかと思ったのですが、
やっぱりblog.phpで作る方が自然なんですね
実は独立したアプリという意味がよく分かっていないので、調べてみます
2019/09/06(金) 18:31:00.60ID:HnthDg8s0
>>526
googleさんdisってんですか?

content=blogをAとして
category=phpをBとして
page=2をCとすれば
ABCで表現できる
2019/09/09(月) 04:10:30.20ID:CJs/c5Zv0
絶対にやるなと書いてあったのですが

unset関数でグローバル変数のSESSION自体を消してしまうとどうなるんですか?unset($_SESSION←こんな感じで

そのサーバー上では二度とセッションを使えなくなるとか?取り返しのつかないことになるのですか?
2019/09/09(月) 07:32:29.32ID:T88U5mPK0
上島竜兵へのフリなんで気にしないでいいよ
2019/09/09(月) 14:19:05.34ID:+lHTuL5H0
>>530
少なくとも自分の環境じゃなにもおきない
$_SESSION自体をunsetしたあとも普通に登録できるし
別セッションで変数登録したあとunsetしても別セッションには影響ないし
最悪おかしくなってもサーバ再起動すれば問題ないだろう
まあやるなって言われてることはやらないほうがいいんじゃね
ソースコード読めば何が問題なのかわかるかもしれんが大変だしね
2019/09/09(月) 19:26:46.12ID:TVbaw9og0
>>530
unset($_SESSION)とか全部消そうとするとセッション変数自体が消えて使えなくなるからダメで unset($_SESSION['hope'])とかやるのはok
セッション全部消すならsession_destroyを使う
ログオフする処理に使っているよ
2019/09/09(月) 21:54:18.14ID:CJs/c5Zv0
>>532
>>533
ありがとうございました

何かあったら対処できないと思うので使わないようにします(^^;
2019/09/09(月) 23:48:15.95ID:FC2yYF8l0
PHP7で脆弱性見つかる
7.1.32よりも前
7.2.22よりも前
7.3.9よりも前
それぞれアップデートしてくれって
2019/09/10(火) 22:14:03.52ID:uk11iNHw0
javascriptの力を借りずに非同期でサーバーサイドに処理投げてサクサク動かすことは可能ですか?
2019/09/10(火) 22:24:54.71ID:KbtshmUG0
>>536
フレーム使ってやる感じになるのかな?
ajaxなんてのが確立されてなかった頃に似たようなことをフレーム使ってやったことがあるけど、javascriptは使った。
2019/09/10(火) 22:59:10.53ID:bRYQFbtI0
出来たとしてもやるべきではない
2019/09/10(火) 23:12:41.69ID:KbtshmUG0
なんで?
2019/09/12(木) 01:45:24.47ID:fy3hyy0Da
「なんで?」に返答するコストが高い問題定期
2019/09/12(木) 08:43:07.82ID:s3ehzYuzp
それに近い考えでサーバーサイドレンダリングってのがある
流行るかどうかは不明
2019/09/12(木) 09:37:33.95ID:qG3+qr6E0
あー質問の意味を取り違えてた
今ブラウザ上で行ってる処理をサーバサイドでやらせるってことか。
例えばオセロのコンピュータ側の処理をブラウザ上のJSじゃなくてサーバサイドでやるみたいな?
2019/09/13(金) 14:29:05.39ID:b/fh3Egg0
そもそも非同期処理するのにJavaScriptが必要じゃね
544デフォルトの名無しさん (ワッチョイ ff8c-3oQN)
垢版 |
2019/09/17(火) 13:48:19.74ID:NULA/kfp0
laravelとDBが分かれてる時ってどうやってアクセスしてるの?URL設定なんかあって接続してるのか?
2019/09/17(火) 14:56:43.70ID:aFTX7+W50
Ruby on Rails のデータベース設定ファイルには、host という項目があって、そこでホスト名を指定する

host: localhost
2019/10/08(火) 06:33:05.95ID:M4B81Xan0
$name="山田";

変数$nameに山田と入れ


PDOでデーターベースに接続し


dbh->query('SELECT * FROM table名 WHERE name="$name"');

このようなSQL文を書いたところ変数の$nameがそのまま文字列として扱われて何度やってもデータを取り出せなかったので、
なんとなくダブルクオテーションとシングルクオテーションを入れ替えて

dbh->query("SELECT * FROM table名 WHERE name='$name'");

このようにしたところ上手くいったのですがどういう事なのか分からず、この現象を調べるのに、どう検索していいのか分からなかったので質問させてください

本にはコードを書くときはシングルでもダブルでも好きな方を使ってもいいと書いてあったのですが
SQL文の中では何か決まりがあるのでしょうか?

よろしくお願いします
2019/10/08(火) 09:23:10.71ID:ICRAu8JP0
PHPとSQLが混ざってるからごっちゃなんだろう

どっちでもいいってのはSQLの方に対して言ってるんでしょ
変数展開後に
WHERE name='山田'
WHERE name="山田"
となってる状態のことをどっちでもいいって言ってるだけだと思う

んでPHPの変数が展開されるのはダブルのほう
echo "$name"; //変数が展開されるので山田が表示される
echo '$name'; //変数は展開されないので$nameが表示される

シングルで同じことをする場合
"略 WHERE name='" . $name . "'";
のように一回抜けて$nameを連結しないといけない

だいたいPHPの本の最初のほうに書いてることだと思うがね
忘れちまったのかい
2019/10/08(火) 09:24:39.62ID:ICRAu8JP0
↑訂正
"略 WHERE name='" . $name . "'";

'略 WHERE name="' . $name . '"';
2019/10/08(火) 13:37:44.62ID:Xix6Aq9n0
文字列に変数を展開や連結してqueryはSQLインジェクションのおそれもあるのでprepareとexecute使え
$sth = $dbh->prepare('SELECT * FROM table WHERE name=:name');
$sth->execute([':name' => $name]);
2019/10/08(火) 14:00:48.65ID:ICRAu8JP0
それはたぶん5ページぐらいあとに書いてると思うからあえて言わんかったけど
2019/10/08(火) 20:15:02.70ID:M4B81Xan0
>>547
ありがとうございました。
やはり持ってる本には説明がないので別の本を買いました
こんな重要な事が書いてないとは

>>549
了解です
ありがとうございました。
2019/10/12(土) 23:40:21.29ID:TjciH4iB0
親クラスのメソッド内で、protectedコンストラクタを持つサブクラスを生成する場合、
new static()ではなく、クラス名を直接指定してnew SubClass()でも生成出来るのは正常な仕様ですか?
この辺調べても、なかなか出てこないので・・
2019/10/13(日) 17:24:19.33ID:54KD8QD50
https://www.php.net/manual/ja/language.oop5.visibility.php
2019/10/16(水) 21:27:10.98ID:3M2x+3910
素朴な疑問、PHPファイルをダウンロードしてきて、コピペでサーバーディレクトリに貼り付けると500エラーになるのってどういう原理?

仮想サーバーで動かしてる方にコピペは動くんだが、ネットのサーバーってFTPとか挟まないともしかしてアップロード出来ない仕組み?
レンタルサーバーで借りてる方はFTP通してアップロードしてて、そんな事起きた事ないから分からん
2019/10/16(水) 21:50:13.55ID:VikEwu130
>>554
.htaccess
が怪しそう。それぞれ、どうなってますか?
2019/10/16(水) 22:57:49.93ID:S66UuMjo0
パーミッション
2019/10/16(水) 23:00:50.37ID:N6aKGsVs0
改行コードかも
2019/10/16(水) 23:24:41.77ID:3M2x+3910
>>555-557
意外と心当たりあるもんだな
改行コードは盲点だったわ
そんな事あるのか
2019/10/16(水) 23:33:52.64ID:m+bghU330
>>558
viが使えるならそれでソースを開く
行末に ^M って出るかも
DOSの改行はCRLFだが
Unix系はLFだけでいい

取り除きたいなら開いているvi上で
:%s/^M//
と打ち、リターンキー
2019/10/16(水) 23:37:26.54ID:m+bghU330
ちょっと不親切だったな

^Mは制御文字なので、CTRL+Vと打ってから続けてCTRL+Mと入力

:%s/^M$//

念のため、$も入れておこう
2019/10/17(木) 22:47:52.05ID:ScmICnbXa
それは 行頭のMだけを削除するという意味?
改行コードが違う時ってどんなふうにviで見えるんだろう
2019/10/17(木) 23:11:28.85ID:J+0mBkyh0
掲示板だと区別付かないんだけど
^Mで一文字の制御文字を意味する
vi(vim)の画面で見るとカラー表示するので区別できる
設定次第だけども
2019/10/18(金) 01:08:35.01ID:kVATbc+M0
改行コードでエラーになるのか
どっちでもエラーに遭遇したことなかったから勉強になった・・・ような
どうせ忘れてしまう可能性が高杉
2019/11/03(日) 21:12:04.91ID:A7Digd0J0
PHPってインタプリタですか?
2019/11/07(木) 18:25:52.30ID:pG3Lscph0
なんでだれも答えてくれないんですか!プンプン!
もういいです自分で調べます!
2019/11/12(火) 23:24:53.56ID:53ocb9qja
オレンジクインという葉が黄色い白菜は緑黄色野菜になるのでしょうか?
567デフォルトの名無しさん (オッペケ Sr11-wiCk)
垢版 |
2019/11/14(木) 11:52:42.61ID:UbsUbcmDr
PHPを勉強しますが、いわゆる駄目なコード(メンテ不能とか他人が読めないとか)を書かないようにするための方法がまとめられた書籍とかWebサイトってありますか?
ググって見ましたが、Githubの他人のコードを読むとかとにかくググるとかで、お手本が一箇所にまとめてあるような事例が見つかりません
そもそもプログラミング初心者なのでどういうコードが良くて駄目なのか根拠が無いと理解できないので、Webサイトで調べるのはちょっとハードル高いです
2019/11/14(木) 12:34:11.76ID:yaNNoKNo0
最初から完璧を目指してると前に進まない上に身にも付かないんで
気にせずガンガン組んで経験値上げた方がいいよ

経験値上げる=ダメコードが分かってくる
2019/11/14(木) 12:34:45.58ID:4neB2vdG0
リーダブルコードとかじゃね
読んだこと無いけど
2019/11/14(木) 12:49:12.10ID:lyAVwglk0
読みやすいコード手法やアルゴリズムを勉強したいなら、
もっとシンプルな、例えばC言語や、Javaで勉強しtが方が良いと思う
PHPはどちらかと言うと実用本位で動けば何でもありの書き方してしまうから
人によって書き方も違うし、手本にして学ぶというのには向かない気がする
2019/11/14(木) 14:29:48.81ID:YV+wn0qT0
>>567
初心者にあれこれ言っても仕方ないと思うので
Beauty Is in Simplicity code
という言葉を送る

日本語訳は「美はシンプルさに宿る」や「プログラマが知るべき97のこと」でググるといい
2019/11/14(木) 14:38:58.41ID:j9FdlXq90
キモ
2019/11/14(木) 18:46:20.22ID:dCzlDN8+0
>>567
他人なんて気にするな。
一年後の自分が読んで理解できるコードを書けば良い。
2019/11/15(金) 17:40:16.12ID:3geqpL2yr
>>568-573
初心者のうちから変な癖をつけないようにしたと思いましたが
あれこれ手を広げないほうがいいかなとも思っていました
PHP自体が可読性より生産性を重視してるのなら
初心者のうちは経験値を積んで生産性をあげて
次のステップとしてリーダブルコードで読みやすさなどを学ぶことにします
みなさん回答ありがとうございました
575デフォルトの名無しさん (ブーイモ MM76-Xz/Q)
垢版 |
2019/11/15(金) 17:49:19.08ID:oPXVgqk1M
実際に動いているPHPって
HTMLのソースみたいにソースコードを見ることは、できないのですか?
2019/11/15(金) 17:54:31.71ID:NeivSIGq0
観客席からは見れない
舞台裏に回れば見れる
577デフォルトの名無しさん (ブーイモ MM76-Xz/Q)
垢版 |
2019/11/15(金) 18:01:55.55ID:oPXVgqk1M
PHPのソースは見れるかと聞いておるのだ。
誰か分かる者はいないのか?
この馬鹿モンが!
2019/11/15(金) 18:36:29.53ID:kIm7g0zF0
厳密に言えば見れるよ、ハック的な手段で
たまにソースコード流出とかって騒ぎになってるじゃん、あれやれば見れる
頑張って勉強しろ
2019/11/15(金) 18:47:26.76ID:NeivSIGq0
念のため書いておくけど、
サイト側の設定ミスだとしても、
サイト側が公開を意図していないものの取得は
不正アクセスとなります
580デフォルトの名無しさん (ブーイモ MMb2-+PZ0)
垢版 |
2019/12/02(月) 18:02:15.74ID:uWhstvBwM
初心者です。
PHP7.2にてfile_get_contentsにてHTMLを
全取得するテストをしているのですが、
youtube、yahoo.co.jpのトップページは
全取得できますが、
Tver.jpなどの一部サイトでは、HTMLの一部が取得できないのですが、
この違いが何なのか分からず。。
コンテキストオプションはchromeのデベロッパーツールと同内容をいずれも使用しています。

一部しか取得できないだけで、errorが返ってきているわけではありません。
このようなケースで想定される原因は何か、
お教え下さい。
2019/12/02(月) 18:12:49.06ID:OjDe9qis0
その関数フロントで生成されるコードは取得できなかった筈なんでそれじゃね
仮想端末挟んで生成してもらってからソース取得の処理作るかで悩んだ覚えある
結局pythonとかJavaScriptにクローラー向きのAPI一杯あるからそっちで操作した方がラクって結論に落ち着いたけど
2019/12/02(月) 19:19:41.96ID:VMZvMN3R0
解決したから原因までは特定しなかったけど
fsockopenだとうまくいくけど
file_get_contentsじゃうまくいかない
ということはあったな
同じcontext使ってるんだけどね
cURL使うと多分うまくいくよ
583デフォルトの名無しさん (ワッチョイ d9c9-+PZ0)
垢版 |
2019/12/03(火) 23:22:42.46ID:8Kx0IsVg0
>>581,582
回答ありがとうございます。
なるほど、動的なコンテンツはこの関数では取得できないのですね。もう少し構造について調べてみます。
curlや他の言語も検討してみます。
2019/12/04(水) 01:38:24.44ID:9qyS2PwK0
例えば、5ch みたいに最初に、空のHTML を送ってきてから、
その後、Ajax で内容をサーバーから取得するようなページでは、
普通のクローラーでは、確実に取得できない

そういう場合は、Ruby などで、Selenium WebDriver を使って、
人がやるのと同じように、ブラウザを操作すれば取得できる
2019/12/04(水) 07:43:35.40ID:xeP1zjgo0
JS挟んだあとのコードがほしいって話なのか
ソースの表示のソースが取れればいいものかと
そりゃ普通にやってちゃ無理だわな
2019/12/04(水) 10:39:16.66ID:ynT0rzJO0
まぁ今どきPHPでスクレイピングなんてやらないしな
Python使えPython
2019/12/04(水) 11:38:04.31ID:HJOtve5N0
ここはPHPのスレ
2019/12/04(水) 11:52:57.07ID:M0bOyCLn0
だからどうした
そもそも向いてねンだから無理矢理処理作ったってしゃーねーだろ
何でもかんでも手作業で作ってたらキリねーぞラクな方行けラクな方
2019/12/04(水) 12:51:22.94ID:uy3yV12YM
pythonはスクレイピングしやすいの?
ちょっと興味出てきた
2019/12/04(水) 12:56:11.50ID:kZk+LcEC0
へんなやつにからまれているね
2019/12/04(水) 13:46:24.53ID:I65RuVdL0
python自体がjavascript動かしてスクレイピングできるわけじゃないよ
たいていwebdriverでheadless chrome動かしてそれを取るだけ
phpにもwebdriverはあるので同様のことはできる
■ このスレッドは過去ログ倉庫に格納されています