【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
2019/07/11(木) 19:25:03.65ID:BpuSRQy60
今php.exeが配布してるか知らないが
php.exe -filename.php
的なことができるかも
2019/07/11(木) 19:26:02.93ID:At9Pc1xnM
Rubyファイルは読み込めないな。
そんなゴミ入れてないからwww
2019/07/11(木) 20:28:52.35ID:dVCZh9+R0
XAMPP使えば、phpをコマンドラインから実行できるぞ。
463デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 20:36:27.66ID:Jm+T6ApQ0
>>459
458の答えを教エロ下さい。
2019/07/11(木) 20:53:35.20ID:dVCZh9+R0
>>458 >>463
https://www.php.net/manual/ja/wrappers.file.php
465デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:07:42.46ID:Jm+T6ApQ0
>>464
include_onceで使えますか?
2019/07/11(木) 21:13:16.43ID:dVCZh9+R0
>>465
試してみなさい。危険なコードでなければ簡単には壊れないから。

危険なコードというのはファイルを削除したりシステム設定などを書き換えたりするコード。
467デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:16:19.19ID:Jm+T6ApQ0
>>466
試したが出来ないんだよね。
2019/07/11(木) 21:18:05.78ID:dVCZh9+R0
>>467
じゃあ、エラーメッセージを確認して。phpはローカルにあるの?
469デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:24:45.41ID:Jm+T6ApQ0
分からん
2019/07/11(木) 21:26:20.82ID:dVCZh9+R0
PHPがローカルにないなら、サーバー側のPHPからローカルファイルにはアクセスできない。アップロードするかなんかしないといけないよ。
471デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/11(木) 21:27:35.31ID:Jm+T6ApQ0
>>470
PHPはローカルにある
2019/07/11(木) 21:32:33.57ID:dVCZh9+R0
初心者は、最初に警告やエラーが見えるようにPHPを設定した方がいいよ。
2019/07/11(木) 21:34:41.35ID:dVCZh9+R0
パスに一字でも間違いはない? 全角・半角が間違ってない?
2019/07/11(木) 22:44:38.90ID:Tg5RlGHB0
そもそもphpだからって、
Webサーバでしか動かしてはいけない、
なんてルールはないと思うが
シェルスクリプトとかpythonみたいに使ったら良いと思うの
475デフォルトの名無しさん (ワッチョイ b6ba-YtL5)
垢版 |
2019/07/12(金) 03:54:57.52ID:B1okfPjL0
>>473
Win10にインストールしたFlywheelのPHPなんだけど、
それが絶対パスでファイルが読めない原因かな?
2019/07/12(金) 19:38:28.33ID:XTqC7rHb0
phpを始めて、50行程度で色々作ったりしているのですが、
それが合っているかどうか、無駄や脆弱性があったりと心配になるので、
webサービスでコードを貼り付けて、相談してもらうようなサービスはあるのでしょうか。

数行であればスレの皆さんにご指摘を受けるのは嬉しいのですが
多い行を貼り付けることもスレ汚しにもなるので、何か良い方法はありませんか?
2019/07/12(金) 19:44:27.25ID:rA9WmwUa0
>>476
長いソースなら、こういう所を利用して公開すればいい

http://codepad.org/
2019/07/12(金) 20:15:43.69ID:XTqC7rHb0
>>477
ありがとうございます。
適当にechoとか書くとシンタックスハイライトもしたので、便利ですね。
2019/07/15(月) 19:56:58.11ID:rFkphOJd0
ファイル名にUnicode制御文字らしきものが入ってしまったのですが
それを削除する方法を教えてください

具体的に何が入っているのかを調べる方法もあれば教えて欲しいです

https://i.imgur.com/V7xutMK.png

twitter のツイートをコピペしたものをファイル名にする処理をしたときに
そうなりました
上の画像で言うと、@の前にある文字です
おそらく、[RLO]だと思いますが、これを取り除く方法が分かりません
2019/07/15(月) 20:00:19.90ID:38cZE3Hm0
>>479
エイサスって読んでたわw
2019/07/15(月) 20:17:25.90ID:rFkphOJd0
>>480
今はエイスースw

https://www.asus.com/jp/About_ASUS/about_asus_history_name

> 2012年10月よりASUSは「エイスース」と発音が統一されました。
2019/07/15(月) 21:55:18.87ID:rFkphOJd0
>>479
自己解決

とりあえず、これでなんとかなりました

$str = preg_replace('/[\p{Cc}\p{Cf}\p{Zs}]/u', '', $str);

このへん、参考にしました

U+001DなどUnicode(ASCII,C0)制御文字がHeaderに含まれるとaborting requestするので除去する - Qiita
https://qiita.com/khsk/items/3c98174bc6cb9b596e61

PHP: Unicode 文字プロパティ - Manual
https://www.php.net/manual/ja/regexp.reference.unicode.php
483デフォルトの名無しさん (ワッチョイ 237c-XeHW)
垢版 |
2019/07/16(火) 23:25:57.59ID:6A7bTSc60
メーラーを作ってる人が集まってるスレはありますか?
484デフォルトの名無しさん (ワッチョイ 75f1-xVkp)
垢版 |
2019/08/05(月) 15:18:25.28ID:RvbOnux20
ものすごく基本的な質問かもしれません。

本物のサーバで実験したいのですが
PHPが使えるレンタルサーバで安いところはどこですか?
将来的にはなんらかの形でネット商売するかもしれません。
2019/08/05(月) 16:46:02.19ID:v6lP0LVw0
「PHPが使えるレンタルサーバで安いところ」で検索するだけなのにマジで商売するの?
2019/08/05(月) 18:04:13.97ID:9k1HrfSt0
まず目の前にあるPCに仮想環境を入れて
適当なLinuxをインストールしてサーバーにしてみ
それなら好き勝手にいじれるし誰にも迷惑かけないしタダだ
そっから始めてみたらどう?
2019/08/05(月) 18:06:59.08ID:9dGEiJ4q0
無料のレンタルサーバもあるんだとか
2019/08/06(火) 01:08:26.13ID:O5zLVi3Ca
xreaな
2019/08/06(火) 05:39:37.94ID:3mWsX+4/0
CentOS6 + Remi php 5.6 で動いているphpは
CentOS7 + Remi php 5.6 でも動くのでしょうか?
DBはOSのリポジトリに登録されているmysqlを使います。
2019/08/09(金) 14:28:42.09ID:NFhVNRcF0
プラットフォームによっては使えない機能や関数もあるけど
使う(必要な)パッケージが揃ってればOSによる差はだいたい設定でどうにかなる
意図的にプログラム側でOSに依存するコードやOSを制限するコード書いてなければ
CentOSのバージョンアップぐらいならそのまま使えるんじゃないの
2019/08/22(木) 21:17:14.37ID:A5RZDSc30
php内でexecを使って外部コマンドを実行させたいです

ローカルでは成功しますが、
webブラウザだとexecでエラー126(コマンド実行不可能)が返ってきます
やはりサーバー側の問題なのでしょうか?
Xサーバーを使っているんですが、どこをいじればいいのか分からなくて・・
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//
と打ち、リターンキー
■ このスレッドは過去ログ倉庫に格納されています