X



PHP質問・雑談スレ5【初心者お断り(ROM歓迎)】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
垢版 |
2018/10/04(木) 16:43:56.93ID:r0iGnrNs
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の改造
0092nobodyさん
垢版 |
2018/11/08(木) 07:34:32.84ID:???
レンタルなのはわかってるだろw
無駄に苦労するより統一しろよーって話だよ。
0094nobodyさん
垢版 |
2018/11/08(木) 09:34:19.63ID:???
Basic認証レベルならwgetでいいし、
フォーム認証でもライブラリ使ってセッション食わればいいんじゃない?
0095nobodyさん
垢版 |
2018/11/08(木) 11:00:39.11ID:???
cronというかいわゆるwebcronをやろうとしてるんだろう?
>>94のとおりだよ
0096nobodyさん
垢版 |
2018/11/08(木) 13:04:42.66ID:???
webcronでsh書くわけねえだろアホ
0097nobodyさん
垢版 |
2018/11/08(木) 13:46:29.26ID:???
sh書けないっていってるじゃん
0098nobodyさん
垢版 |
2018/11/08(木) 14:05:38.65ID:???
>>97
>(現在はshの中身はfoo.phpにアクセスするという物になっています)
0099nobodyさん
垢版 |
2018/11/08(木) 14:58:03.89ID:???
>cronも併用していますが、シェルスクリプトを書ききれませんでした
書けないっていってんじゃん

curlかwgetいれてるだけだろうが
そんなのシェルスクリプトでもなんでもない
0100nobodyさん
垢版 |
2018/11/08(木) 15:05:30.73ID:???
>>97「(技術的には)sh書けないって言ってるじゃん」
>>98「(サーバーの仕様では)sh書けてるだろボケ」
0101nobodyさん
垢版 |
2018/11/08(木) 15:10:40.83ID:???
みんな年末のカンファレンスに参加するの?
Web業界独特の気持ち悪いイベントに
0102nobodyさん
垢版 |
2018/11/08(木) 15:54:08.89ID:???
トークンで思い出した
bin2hex(random_bytes(32));ってのを見かけたんだけど これが今の主流なんかね
0103nobodyさん
垢版 |
2018/11/08(木) 16:24:18.69ID:???
>>101
しない
>Web業界独特の気持ち悪いイベント
これは同意だけど、まぁ最先端の金持ちオタクの集まりだから仕方ない
0104nobodyさん
垢版 |
2018/11/08(木) 16:49:38.40ID:???
金持ちしか来ないのか?
0106nobodyさん
垢版 |
2018/11/08(木) 19:09:50.52ID:???
webcronって
定期バッチ動かしたいけどサーバ仕様上cronが使えないから外部からHTTPで叩きましょう
ってなもんでしょ
他になんか意義あんの
0107nobodyさん
垢版 |
2018/11/09(金) 00:56:46.30ID:???
0円 = \0 === null (ASCIIのnull 文字列)

思いついただけ
0109nobodyさん
垢版 |
2018/11/09(金) 19:15:29.67ID:oLv4Ne/G
WordPressのサイトで、
function.phpの中で複数のphpファイルをインクルードするのと、
---------
include_once 'file1.php' ;
include_once 'file2.php' ;
include_once 'file3.php' ;

function.phpの中に全部のコードをベタで書くのとでは、WEBサイトの表示速度に差が出ますか?
0110nobodyさん
垢版 |
2018/11/09(金) 19:58:28.88ID:???
出るけど3つ程度なら誤差
0111nobodyさん
垢版 |
2018/11/09(金) 20:07:53.45ID:oLv4Ne/G
>>110
ありがとうございました。
0112nobodyさん
垢版 |
2018/11/09(金) 23:38:12.38ID:???
レイプ魔 山口敬之?レイプ自民?
0113nobodyさん
垢版 |
2018/11/10(土) 09:38:50.53ID:2ggaVCM0
C言語の
#if 条件
#else
#endif
みたいなのはPHPにはありませんか?
0114nobodyさん
垢版 |
2018/11/10(土) 11:42:16.50ID:???
>>113
無い
そういうのはプリプロセッサと言ってコンパイル前の処理なんだけど、
phpはコンパイル自体が無いので存在しない
0115nobodyさん
垢版 |
2018/11/10(土) 14:04:09.30ID:???
#ifで何したいの?
0116nobodyさん
垢版 |
2018/11/10(土) 15:02:41.74ID:???
自分で対象の*.phpを前処理するプログラムをphpでもcでもなんでもいいから書いて
前処理した後にphpに引数とともに引き渡せば、あるいは
0117nobodyさん
垢版 |
2018/11/10(土) 15:16:21.03ID:???
いや、あれ?>>116取り消し

解決とか考えなくて良いんだからcのプリプロセッサとか考えるまでもなく
普通にifで条件括って、分岐でincludeすればいいんでないかな

到達し得ないincludeは、たとえパースエラーになる代物が指定されてても無視されるわけで
0118nobodyさん
垢版 |
2018/11/10(土) 15:36:14.03ID:???
>>117
それで同じ事を実現できるけど、
それじゃめんどくさい事をしたいんだと思う
実は#difineもしたいとかそういうことじゃないかな。知らんけど
0119nobodyさん
垢版 |
2018/11/10(土) 21:18:12.95ID:???
>>115
例えばf()の改良版を作りたいので取り敢えず
古い方のf()は無効化しておきたい場合です。

#if(0)
function f(){  ・・・  }
#endif

function f(){  ・・・  } //改良版
f(); //実行
0120nobodyさん
垢版 |
2018/11/10(土) 21:58:43.46ID:???
>>119
普通のifでいいじゃん
えっ と思うかもしれないが、できてしまう

if( ENABLE_EVOLVE ){
function f(){ echo 1; }
}else{
function f(){ echo 2; }
}

f();
0121nobodyさん
垢版 |
2018/11/10(土) 22:00:25.48ID:2ggaVCM0
>>120
そんな事出来るんですか!!
0122nobodyさん
垢版 |
2018/11/10(土) 22:01:30.78ID:???
この辺はなんかこうjsに近いんだ

とでも思って納得しておくしかないけど、まあできる
0123nobodyさん
垢版 |
2018/11/10(土) 22:07:26.59ID:???
if等の中に放り込むと、function定義前に呼び出したりはできなくなる

たとえば>>120の1行目にf();を突っ込むとfatalが出る

そこんとこにさえ気をつければ大丈夫なはず
逆に言えばそういう柔軟処理をやってくれてるということ
0124nobodyさん
垢版 |
2018/11/10(土) 22:32:14.58ID:???
(…質問者よ…聞こえますか…関数を分けるのではなく引数で分けるのです…聞いていますか…)
0125nobodyさん
垢版 |
2018/11/10(土) 22:38:24.13ID:???
(……(∩゚Д゚)アーアーキコエナ-イ……キコエナーイ……)
0126nobodyさん
垢版 |
2018/11/11(日) 19:15:24.97ID:???
>>124
良く分かりません。
解説お願いします。
0127nobodyさん
垢版 |
2018/11/12(月) 08:30:32.48ID:???
俺はC知らんしよくわからんが
コメントアウトしとけばいいって話じゃないんか
0128nobodyさん
垢版 |
2018/11/12(月) 09:12:48.45ID:???
>>126
>>120の書き方だと関数をまとめられ無くなって収集つかなくなるよ
小ネタとして覚えておく程度ならいいけど、実用的な場面はない
そもそも関数の定義は別ファイルにまとめてincludeする方が分かりやすい
あんまり変な書き方すると自分がめんどくさいだけ

という事を数年前に俺も教わった
0129nobodyさん
垢版 |
2018/11/12(月) 09:16:04.44ID:???
こんな感じが後々楽と思う

function f(flg){
if(flg){
return 1;
} else {
return 2;
}
};

echo f(flg);
0130nobodyさん
垢版 |
2018/11/12(月) 09:40:34.68ID:???
引数で分岐させちゃったらその関数使ってる箇所全部修正しなきゃじゃん
後々ってなんだ
0131nobodyさん
垢版 |
2018/11/12(月) 17:56:26.48ID:???
引数の数や型で動作を分けるとかもあるけど結局呼び出し側の修正必須
どっちかっていうとコードそのものを残さなくていいならcvsに任せるほうが

>>127
/* */形式のコメントは入れ子にできないから
内部で/* */使ってると面倒
0132nobodyさん
垢版 |
2018/11/12(月) 18:25:21.05ID:???
どうやってもキモい(設計が悪い)けど例えば

<?php

function f1() { echo 1; }
function f2() { echo 2; }

const ENABLE_EVOLVE = true;

if (ENABLE_EVOLVE) {
$f = f1;
} else {
$f = f2;
}

$f();
0134nobodyさん
垢版 |
2018/11/12(月) 18:53:47.45ID:???
変数から呼び出す辺りキモいし怖い
0135nobodyさん
垢版 |
2018/11/12(月) 19:10:30.12ID:???
なんでこれどうやってもキモイんだろう?
と思ったらクラスにしてないから変なのか
0136nobodyさん
垢版 |
2018/11/12(月) 19:32:21.82ID:???
classにしても同じだろう
ifかませての別定義やincludeがやりづらいからなおさらキモい
0137nobodyさん
垢版 |
2018/11/12(月) 19:36:32.00ID:???
だったらどうやればいいんだよ(怒)
0138nobodyさん
垢版 |
2018/11/12(月) 19:37:02.28ID:???
>>132
よこからだけど
$$f();
これってなんて言うんだっけ?ドルマーク2つ付ける奴
0140nobodyさん
垢版 |
2018/11/12(月) 19:54:12.47ID:???
${$f}
{$f}()
まあ原理は一緒

>>137
意図と状況による
が既存関数の改良で、呼び出し側の変更が必要になるのはナンセンス過ぎる
0141nobodyさん
垢版 |
2018/11/12(月) 19:59:52.96ID:???
>>134
上のコードはキモいけど変数に関数突っ込んで呼ぶこと自体は別にキモくない
いやPHPではあんまりやらんけども
0142nobodyさん
垢版 |
2018/11/12(月) 20:08:27.79ID:???
>>141
jsとかで変数に関数を放り込むのは
そもそも変数に関数を放り込める仕様、名前空間の欠如や使いづらさ、グローバル領域汚染の防止、というような理由がある
それらを解消するメリットが「どこで内容かわるかわからん変数を経由する」というデメリットを超過するから使う意味がある

phpで変数に関数そのものを放り込めるかといえばNO
$f = f1; $f(); なんてwarningとともに f1 が 'f1' に変換されて、文字列変数経由で呼び出されてる
なので>>132みたいにやるのは合理性に欠ける

というふうに俺は考える
0143nobodyさん
垢版 |
2018/11/12(月) 20:10:23.48ID:???
もとからobjectの一要素となってたみたいな前提条件があれば話は別だけどな
0144nobodyさん
垢版 |
2018/11/12(月) 20:16:47.89ID:???
jsはグローバルなDOMがあるからこその無名即時関数
でなければせいぜいアクセス解析だ
実際使いづらい部分もあるが、DOMの有無が一番大きい
PHPとは前提が違いすぎる
0145nobodyさん
垢版 |
2018/11/12(月) 20:24:57.47ID:???
勘違いしてて改良だとimproveのところevolve(進化)って書いちゃったんだけど突込みが入らなかったことにやや驚愕
0146nobodyさん
垢版 |
2018/11/12(月) 20:44:43.57ID:???
>>145
>>129だけどなんか違うけど、そんな文化があるのかなー?無知なまま突っ込んでマウント取られると嫌だから
ワイ文化(flgに変更)にそっと変えてごまかしたれっと思って突っ込めなかったチキンで御座います

とりあえず見たことない単語だから検索した人は結構いると思う
0147nobodyさん
垢版 |
2018/11/13(火) 16:29:29.90ID:???
mail関数の$messageの説明に「各行の長さは 70 文字を超えては いけません。」って昔から記載してあったっけ(´・ω・`)
0149nobodyさん
垢版 |
2018/11/13(火) 17:16:15.14ID:???
>>148
親切に教えてくださりありがとうございます(・ω・)
勉強不足でした。
0151nobodyさん
垢版 |
2018/11/13(火) 22:45:29.66ID:???
ステータスコード404がうまく返りません

http_response_code( 404 );
でステータスコード404が返らず、
header("HTTP/1.0 404 Not Found");
だと404が返る場合、どういう可能性が考えられますか?

phpのバージョンは5.4で、
function_exists()で調べた所、以下2つの関数は存在していました
http_response_code()、header()

関数の前には何も出力されていない状態です
原因がわからず、結構ハマってしまいました
お助け下さい
0152nobodyさん
垢版 |
2018/11/13(火) 22:57:21.75ID:???
headerじゃダメでhttp_response_codeならOKってどういう場合なの
0153nobodyさん
垢版 |
2018/11/14(水) 03:45:56.02ID:???
その関数は使ったことないけどリファレンス見るかぎり
404出すには2回呼び出す必要があるようだが2回やってる?

https://secure.php.net/manual/ja/function.http-response-code.php
> var_dump(http_response_code(404));
> var_dump(http_response_code());

最初404設定するときに返ってくるのは設定した404ではなく
設定前の(おそらく)200であるようだけど
0154153
垢版 |
2018/11/14(水) 03:51:27.48ID:???
ああ、すまない
>>153は忘れてくれ

ユーザノートみてたらhttp_response_code(404)だけで返るみたいだから
実際にやってみたらちゃんと404返ってきたわ
0155nobodyさん
垢版 |
2018/11/15(木) 14:50:25.43ID:wt/2jR9O
PECL死んでる?
0156nobodyさん
垢版 |
2018/11/18(日) 05:29:39.81ID:???
ピルクルが飲みたい
0158nobodyさん
垢版 |
2018/11/25(日) 14:03:36.59ID:VzRv4Ee2
include_once('file.php');
は読み込めるのに、
include_once('./file.php');
だと
failed to open stream: No such file or directory
と出るのだけれどなぜよ?
0160nobodyさん
垢版 |
2018/11/25(日) 14:21:00.13ID:???
変って書くと変だな
「変な仕様」なんだ
0161nobodyさん
垢版 |
2018/11/25(日) 14:31:10.54ID:VzRv4Ee2
>>159
サンキュウ。
読めたよ。
も一つ教えてくれよ。
Windowsで
include "C:\path1\path2\file.php"
みたいに絶対パス指定して読み込む事は
出来ないの?
0162nobodyさん
垢版 |
2018/11/25(日) 14:56:42.30ID:???
エスケープ(\)意識しろ
""なら\\にしろ
0163nobodyさん
垢版 |
2018/11/25(日) 14:58:04.04ID:???
ま 別に\じゃなくても/でいいんだが
0164nobodyさん
垢版 |
2018/11/25(日) 16:21:19.98ID:???
>>161
できる
realpath()を使えば絶対パスの取得が出来るので、それを利用すればok
https://webkaru.net/php/function-realpath/

ちなみに絶対パスはサーバーによって変わるので、
どういったものになるかは不定だ

あと>>159だけど、
dirname(__FILE__)単独よりも、reaalpathと併用するのが最も良かった事を思い出した
https://ja.stackoverflow.com/questions/37252
まぁrealpathなしでバグるなんて相当変な場合じゃないとないけどね
0165nobodyさん
垢版 |
2018/11/25(日) 21:03:05.10ID:VzRv4Ee2
>>164
ありがとう。
ところでPHPファイルって
<?PHP で始まって
・・・
?> で閉じる場合と、閉じない場合が
あるようなのだが、閉じなくてもいいの?
0166nobodyさん
垢版 |
2018/11/25(日) 21:17:37.69ID:???
>>1
> PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
> https://mevius.5ch.net/tech/ (【PHP】で板内を検索)

>>165 続けるなら↑で質問すると良いよ

ライブラリなんかの純粋なPHPのみのコードなら閉じタグはいらないしむしろ省略を推奨されている
HTML(view)にPHPのコードを埋め込むような書き方をする時はHTMLとの境界を示すために必要
http://php.net/manual/ja/language.basic-syntax.phpmode.php
初心者は閉じておくと間違いはない
0168nobodyさん
垢版 |
2018/11/26(月) 00:48:41.26ID:???
phpって拡張子がださいから変えようと思うのだけど
おまえら何にしてる?
aspxとかdoとかかっこよくね?
0169nobodyさん
垢版 |
2018/11/26(月) 00:54:35.10ID:???
>>168
その感覚は俺も学生の時にあったわ、懐かしい
やるべきことは、拡張子を表示しなくていいように設計する事だ
例)
https://news.yahoo.co.jp/pickup/6304566
まぁまともなFWなら大抵こうなる
0170nobodyさん
垢版 |
2018/11/26(月) 04:47:09.93ID:???
Laravelのソースコード読んでルーティングの仕組み調べようとしたけど
最近のソースの読み方がわからないぜ・・・
0171nobodyさん
垢版 |
2018/11/26(月) 08:50:25.72ID:???
それ時間の無駄じゃね
全部index.phpに飛ばして後はURLを規則通り振り分けるだけだ
0172nobodyさん
垢版 |
2018/11/26(月) 14:53:27.98ID:???
>>171
それってPHPだけで出来るの?
サーバがPHPで書かれてるというなら理解出来るんだけど
なんか最小限のコードないかしら
0173nobodyさん
垢版 |
2018/11/26(月) 19:17:24.81ID:???
>>172
//.htaccess
RewriteEngine On
RewriteRule . index.php

//inddex.php
<?php
echo 'URL:'.$_SERVER["REQUEST_URI"];

要はこの.$_SERVER["REQUEST_URI"]を元にルーティングしていくんだけど、
パターンが死ぬほど多くてくっそめんどくさい
homeですら
example.com
example.com/
example.com/index.php
とある

深入りはやめたほうが良いよ
0174nobodyさん
垢版 |
2018/11/26(月) 23:12:49.53ID:???
>>173
ありがとう
やっぱりPHP単体でやってるというわけではないんだね
想定内でちょっと安心
0175nobodyさん
垢版 |
2018/11/28(水) 16:38:00.31ID:???
https://github.com/PHPMailer/PHPMailer
のページについて質問です

Installation & loadingの箇所で、
requireの前にuseがありますが、なぜでしょうか?

感覚的にはrequireしてからuseするので、requireを先に書きたくなります
これは単純に好みでしょうか

以下の部分です
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
0176nobodyさん
垢版 |
2018/11/29(木) 02:59:11.49ID:???
自分も感覚的にはそうする
でもそもそもrequireをべた書きするのはだいぶ前のスタイルなのでは
0177nobodyさん
垢版 |
2018/11/29(木) 08:27:41.73ID:ZUtiu1g9
なぜcomposerのautoloaderを使わないのか
0178nobodyさん
垢版 |
2018/11/29(木) 08:56:34.25ID:???
>>176
ありがとうございます
compoer知りませんでした、勉強してみます
0180nobodyさん
垢版 |
2018/12/01(土) 11:09:00.18ID:???
従量課金制のって使ったことないけど
費用どんなもんなの?
CPU実行時間とかよくわからん・・・
同じコンテンツでも言語によって差が出るってことなのかな?
その場合PHPを選択するというのは理にかなっているのだろうか
0181nobodyさん
垢版 |
2018/12/01(土) 11:18:28.68ID:???
>>180
CPU・ストレージが超強力なので、大量の画像データのリサイズや機械学習が主な運用方法
機械学習で使うと費用を超抑えられる

場合によってはエンコードや圧縮・解凍に使うのも良いかも知れない
間違ってもチャット掲示板なんて作っちゃだめだゾ
0182nobodyさん
垢版 |
2018/12/01(土) 11:21:03.86ID:???
>>181
チャット掲示板がダメな理由は?
0183nobodyさん
垢版 |
2018/12/01(土) 11:23:05.40ID:???
>>182
アクセスする度にカネがかかる。従量課金にする意味がない
通常のサーバーで良い
0184nobodyさん
垢版 |
2018/12/01(土) 11:32:15.67ID:???
>>183
アクセスする度に金かかるのはチャットだけじゃなくない?
転送量もあるからでかいファイル送るのと小さな文字データを回数多く送るのは変わらん気するけど
0185nobodyさん
垢版 |
2018/12/01(土) 11:37:17.65ID:X2PG/ijA
記事に出てるPHPレイヤーじゃmysql使えないからWordpressは無理だな

簡単にスケール出来るのもLambdaのメリットだが
大量に同時実行するとmysqlの接続数が増え過ぎて
DBの動作に支障が出る

なのでスケーリングが必要な場合
接続が比較的軽いDynamoDBが使われたりするが
色々とクセがあるようだ
0186nobodyさん
垢版 |
2018/12/01(土) 11:40:08.22ID:X2PG/ijA
Lambdaは無料枠あるけど
実際サービスを作ろうとしたら
Amazon S3とかAPI GatewayとかCDNとかも必要
アプリの内容によってはDBも
あとデータ転送も課金される
0187nobodyさん
垢版 |
2018/12/01(土) 11:41:38.18ID:???
>>184
別にチャットでもHPでもAWSでやりたいなら好きにしていいぞ
金を払って初めて分かる事もあると思う
0188nobodyさん
垢版 |
2018/12/01(土) 11:42:15.75ID:???
ラムダはリレーショナルDBは無理ってAmazonセミナーで言ってた
0189nobodyさん
垢版 |
2018/12/01(土) 11:43:43.05ID:???
>>187
一般的なサイトならレンサバでいいと思うのはそうなんだが
0190nobodyさん
垢版 |
2018/12/01(土) 11:51:45.01ID:X2PG/ijA
単に安いのが欲しいってだけならVPSにすれば?

AWSにもVPSっぽいのがある
安い代わりにサーバーを停止しても課金されるのと
AWSの他サービスとの連携はしづらい

最近のアップデートでMySQLも使えるように

[アップデート] Lightsail で月額 $15 からマネージド・データベースが使えるようになりました!
https://dev.classmethod.jp/cloud/aws/new-managed-databases-for-amazon-lightsail/
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況