PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net
2016/10/17(月) 21:44:12.59ID:???初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://echo.2ch.net/tech/ (【PHP】で板内を検索)
前スレ
http://tamae.2ch.net/test/read.cgi/php/1461283091/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
http://echo.2ch.net/test/read.cgi/tech/1444216746/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0652632
2016/12/21(水) 15:25:46.59ID:???いくつかのタイトルのゲームサーバです。
>>650
>>632のコードで、0〜255までのうち、偶数は正常で応答があり、奇数は異常で応答がないとし、
これは正常なサーバの状態とします。
stream_socket_clientのタイムアウトは0.3秒に設定されていますが、
これでは、最初の方は正常に応答があるものの(分割した理由はこのため)、ある程度いくと、
正常なはずの偶数のサーバの応答も返ってこなくなります(100%ではありませんが)。
しかし、タイムアウトを5秒まで伸ばしたところ、全て正常に応答が返ってくるようになりました。
ちなみに分割というのは、sleepを挟んでということではなく、
一度スクリプトを終了して、再度スクリプトを起動しています(引数でstartとendを指定するイメージ)。
forのインクリメントを$i++から$i+=2にし、正常な偶数のサーバのみに問い合わせた場合、
タイムアウトを0.1秒にしても全て正常に応答が返ってきます。
教えていただいた関数ですが、上のはクライアント側には使わないと思います。
下のはfsockopenのことを言っているのなら、stream_socket_clientとほぼ同じ関数です。
0653632
2016/12/21(水) 15:41:28.87ID:???使わないというのは語弊があったので、訂正します。
使う必要がないというニュアンスでお願いします。
サーバの仕様がわからないので・・・
0654nobodyさん
2016/12/21(水) 16:38:45.41ID:???0655632
2016/12/21(水) 16:40:31.51ID:???正しくはWindows7+PHP5.4です。
ハード的にいえばWindowsのものよりだいぶ劣っているのですが、
先ほどCentOS7+PHP7の別環境を構築したので(VM上ではなく専用機)、
>>632のコードを実行しましたが、同一回線で問題なく最後まで正常に動作しました。
Windowsのソケットが悪いのか、ハードに問題があるのか、
何が原因かまではわかりませんが、どうも環境依存っぽいです。
環境依存となると、正確な情報が欲しければタイムアウト伸ばしたほうがよさそうなので、
一応Javaでもためそうとおもいますが、とりあえず構築したLinuxで気長にやることにします。
0657nobodyさん
2016/12/21(水) 18:35:56.95ID:???お前らいい加減学習しろよ
0658nobodyさん
2016/12/22(木) 12:51:15.27ID:???0659nobodyさん
2016/12/23(金) 23:24:25.82ID:GYV6CxEoSESSIONなのか、classなのか、それともtmp用のテーブルを作るのか・・・
何か色々作ってみたいのですが、前に勧めません。とりあえずなんでもいいから作って見たほうが良いんでしょうかe?
こういうのは場数を踏むしかないんでしょうか?
0660nobodyさん
2016/12/23(金) 23:58:36.32ID:???IOは別クラスに切り出すと後のストレージ切り替えなんかの変更に強い
が, 考え過ぎて手が動かないよりは最初は手を動かした方が良い
0661nobodyさん
2016/12/24(土) 00:05:01.87ID:Zz5BM5EIありがとうございます
失敗しても何かの糧になると思って、やってみます
0662nobodyさん
2016/12/24(土) 07:51:09.57ID:???だいたいあれこれ考えてると完成までしないで構想で終わるから
0663nobodyさん
2016/12/24(土) 08:43:49.53ID:???そう。あとセキュアも完璧主義になりすぎると、リリースできない。
破壊される前提で設計したら負けない。
0664nobodyさん
2016/12/24(土) 09:02:16.35ID:Zz5BM5EIそれちょっと違うくね
0666nobodyさん
2016/12/24(土) 12:30:40.79ID:???自信ないやつは笑われてもそうすればいいんだぜ
普通じゃないことをさも当たり前のように言わなければ
自分は糞だからそうするって自覚してれば何をしたっていいじゃない
0667nobodyさん
2016/12/24(土) 12:34:40.76ID:???0671nobodyさん
2016/12/25(日) 16:38:23.16ID:???抽象化も下手くそだし、こいつは普段どんなコードを書いているのかというのがひと目で分かるな。
0672nobodyさん
2016/12/25(日) 16:48:34.64ID:k0peFTaNリソースも実質無制限にあるようなもんから速度以外考えない
そりゃ環境に甘えたコードが出てきてしまうだろう
0673nobodyさん
2016/12/25(日) 17:32:25.87ID:???なに!? おまえPHPマスターになにいってんの?
完全なセキュアなんて無いんだが?
オレの手法は免震構造マンションからヒントを得ている。固く守れば逆に崩れる。
ハッキングされようがその力を無力化する。おまえのスペックでは理解不能の次元であることを謝罪する。
0675nobodyさん
2016/12/25(日) 20:58:02.34ID:k0peFTaN尊大さが足りない
0676nobodyさん
2016/12/26(月) 00:08:21.78ID:???0677nobodyさん
2016/12/26(月) 00:18:19.36ID:BpT0k2cTソロだとアホらしいだけだ
0678nobodyさん
2016/12/26(月) 11:20:55.28ID:miFRCdVbhttps://youtu.be/uH-WOOcNZ0s
https://youtu.be/xHx5MbIGEoY
0679nobodyさん
2016/12/26(月) 11:45:29.81ID:BpT0k2cT0680nobodyさん
2016/12/26(月) 12:03:46.34ID:???//
}
$input['q']が存在してなおかつ空ではないことを確認する場合、
上記よりも簡潔な書き方はありませんか?
0682nobodyさん
2016/12/26(月) 15:52:00.20ID:???0684nobodyさん
2016/12/26(月) 22:16:26.19ID:???今知ったけど怖すぎて使えない
gmp_divexact
gmp_divexact ― 正確な除算
GMP gmp_divexact ( GMP $n , GMP $d )
高速な "exact division" アルゴリズムを使用して n を d で割ります。 この関数は、n が d で割り切れることがわかっている場合にのみ正確な結果を出力します。
$div2 = gmp_divexact("10", "3"); // 間違った結果となります
echo gmp_strval($div2) . "\n";
0686nobodyさん
2016/12/27(火) 22:27:51.95ID:???死にたい・・・
以下で半日潰れましたorz
これはマッチしてしまう
var_dump(preg_match('/[あい]/', 'う')); // int(1)
0687nobodyさん
2016/12/27(火) 23:09:25.98ID:???マルチバイト使うのにuオプション付けないお前の頭がクソ
PHPにクソな部分があるのは否定しないがそもそも外部ライブラリ側の仕様持って来るヤツはプログラミング向いてないから早いとこ引退しろ
0688nobodyさん
2016/12/28(水) 01:50:10.42ID:???こっちで回収しておく
0689nobodyさん
2016/12/28(水) 09:04:28.87ID:???0692nobodyさん
2016/12/28(水) 21:36:15.17ID:???PHPでpear::mailを使ってヤフーでSMTP認証してヤフーからメール送れますか?
0693nobodyさん
2016/12/28(水) 21:43:17.54ID:???0694692
2016/12/29(木) 00:28:31.69ID:???ありがとうございました
0695nobodyさん
2016/12/29(木) 22:45:48.26ID:???「はいはい、emptyね」みたいな感じで昔書いたコードを読んでいったら、
そのへんは全部対策してあるのになおも値がとれなくて、
どうなってんだこれ?と思ったら、
keyがアンダースコアとハイフン間違えてて本当にPOSTされてないだけだった。
PHPさん疑ってごめん。でも君は普段から疑わしすぎるんだよ。
0696nobodyさん
2016/12/30(金) 08:33:26.83ID:???PHPStormで、カーソル位置がPHPの関数の文字列にあるとき、
F1 キーを押すとPHP日本語ヘルプでその関数の説明をを表示する
ようにしたいです。
ご存じの方いましたら教えてください。
0698nobodyさん
2016/12/31(土) 09:50:53.91ID:???コマンドラインからphp xxxx.phpで実行出来るようにはなったのですが、
xxxx.phpにpathを通しても、exeのように、
xxxx.phpあるいはxxxxとうつだけでは実行はできませんよね?
0699nobodyさん
2016/12/31(土) 18:38:55.23ID:???0701nobodyさん
2017/01/02(月) 01:05:14.21ID:???インタプリタを関連付ければできそうな気がするが
0702nobodyさん
2017/01/02(月) 13:55:50.76ID:???適当な拡張子をつけてphp.exe(CLI)に関連付けしてみると、
拡張子までうつと実行は出来るようになりました。
しかし$argvがどうも受け取れないようで、意図した動作にはならず、
何をしてもエラー処理部分に常にいってしまいます。
0703nobodyさん
2017/01/02(月) 23:43:58.27ID:???個別のファイルを、実行可能にするには、そのファイルの1行目に、シバン(shebang)を書く
#!/usr/bin/env python
環境変数PATHから、pythonコマンドを探して、そのファイルを実行する。
PATHの順番によって、python2, 3 のどちらが起動されるかが決まる
シバンが書いてあれば、そのファイルを起動するプログラムが分かるので、
python a.py とコマンドを打たなくても、
カレントディレクトリから、./a.py
または、絶対パス/a.py で起動できる。
ただし、そのファイルに実行可能属性が必要
a.py, a.php のようなスクリプトが置いてある場所を、環境変数PATHには設定しない
0704nobodyさん
2017/01/03(火) 02:06:32.04ID:???呑みのお誘いや二日酔い報告にどうぞ!
【ビール大好きくんサマー】
http://らいん.me/S/sticker/1292996
(URLは「らいん」→「LINE」に置き換えてね)
0707nobodyさん
2017/01/05(木) 03:11:52.93ID:???共用サーバーでSMTP認証したらこのようなエラーがでました
Warning: fsockopen() has been disabled for security reasons in (class.smtp.phpまでのパス) class.smtp.php on line 290
class.smtp.phpの290行目にはこのように書いてありました
$this->smtp_conn = fsockopen(//←ここが290行目です
$host,
$port,
$errno,
$errstr,
$timeout
);
この共用サーバーではPHPMailerでSMTP認証できないのでしょうか?
また、PHPMailerでSMTP認証できる共用サーバーをご存知ないでしょうか?
できれば無料サーバーだとありがたいです
0708nobodyさん
2017/01/05(木) 03:50:36.02ID:???0711nobodyさん
2017/01/05(木) 16:14:42.57ID:???http://www.2by2host.com/articles/php-errors-faq/disabled_fsockopen/
0712nobodyさん
2017/01/05(木) 19:45:58.54ID:???以前はDBばかり使っていたのでほとんど気にしていなかったが、
PHPの配列関連のメソッドって本当にマジキチだな。
PHPの不評の大部分(整合性のとれていない引数やメソッド名)って、配列関連じゃねーの?
0713nobodyさん
2017/01/05(木) 19:48:19.67ID:???配列処理増えてきたころって一番文句を言いたくなる時期とかぶるような気もするし。
0714nobodyさん
2017/01/05(木) 22:59:29.94ID:???0715nobodyさん
2017/01/05(木) 23:51:50.16ID:???その引数、$errno, $errstr にエラーメッセージが書いてあるんじゃないの?
それには、何て書いてある?
0717nobodyさん
2017/01/06(金) 19:41:37.74ID:???気に入らなきゃ速度なんて気にせずforでごにょったらいいと思うの
いまならyieldも使えるし
0718nobodyさん
2017/01/07(土) 07:04:16.08ID:???0719nobodyさん
2017/01/07(土) 14:55:16.02ID:???マニュアルに書いてある通りではあるんだけれども
0721nobodyさん
2017/01/08(日) 11:32:12.90ID:???普通はマニュアルなんて見なくてもある程度予想がつく。
0722nobodyさん
2017/01/08(日) 15:36:28.98ID:???[
'a.bc',
'd.ef',
'g.hi',
]
このドット記法の配列データを以下のようにできませんか?
[
'a' => ['bc'],
'd' => ['ef'],
'g' => ['hi}
0723nobodyさん
2017/01/08(日) 19:53:09.56ID:???0724nobodyさん
2017/01/08(日) 20:27:11.49ID:???$new[] = explode [0] => [1]
0725nobodyさん
2017/01/09(月) 00:19:28.37ID:???0726nobodyさん
2017/01/09(月) 00:21:23.01ID:???$test2 = array("a" => "a");
echo $test["a"]."<br>"; // OK
echo "$test[a]<br>"; // OK
echo $test[$test2["a"]]."<br>"; // OK
echo "$test[$test2[a]]<br>"; // SYNTAX ERROR
最後のケースが構文エラーになるのは何故なのでしょうか?
(echo "{$test[$test2[a]]}<br>";とした所うまく動きました。)
0727nobodyさん
2017/01/09(月) 01:30:28.61ID:???マジかよと思ったら本当にこれ動いたわw
0728nobodyさん
2017/01/09(月) 07:11:47.79ID:???$d = "b";
echo "$a[$d]"; //OK
$d = ["e"=>"b"];
echo "$a[$d[e]]"; //NG
$a = ["b"=>["c"=>"d"]];
echo "$a[b][c]"; //NG
$a = ["?b"=>"c"];
echo "$a[?b]"; //NG
ダブルクオテーション内において{}で囲まずに正常に展開される範囲は
1次元の配列まで
かつ
添字部分はシングルクオテーションや配列記号[]を含める記号を入れられない(ただし$から始まるスカラー変数は可能)
ということなのだろう・・・
0729PHPネ申
2017/01/09(月) 12:26:06.49ID:???? echo "$test[$test2[a]]<br>"; // SYNTAX ERROR
◎ echo $test[$test2["a"]];
こうじゃないの?
0731nobodyさん
2017/01/09(月) 17:34:23.33ID:???とりあえず{}で囲むのが基本やとおもう
['a']ならまだしも$test[a]はそのまんまだとエラー出るしなあ
0732nobodyさん
2017/01/09(月) 17:42:55.69ID:???0733nobodyさん
2017/01/09(月) 22:53:04.00ID:bmjPRAajPHPで文字列の文字コードを判別する場合、
この様に引数に予め複数の文字コードを列挙する必要があるのでしょうか?
感覚的には、mb_detect_encoding関数の引数に
調査対象の文字列を入れれば、自動で文字コードが検出されるものかと思っておりました。
0734nobodyさん
2017/01/10(火) 01:43:45.43ID:???2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
>>733
その関数のドキュメントに、使い方は書いてないの?
0735nobodyさん
2017/01/10(火) 01:48:53.38ID:???残念ながら文字コード検出は「難しい」処理で, 一般には一意に決定出来ない
ICUでもiconvでもnkfでも推測は出来ても決定は出来ない
文字の符号化方式は無数に存在するからな
だから候補を挙げておいてそこから選ばせる必要がある
0737nobodyさん
2017/01/10(火) 10:53:00.59ID:???それやらないと文字コードを誤検出してかなりダルイ
// utf-8に変換する時は脳死でこう
$str = mb_convert_encoding ( $str, "UTF-8", mb_detect_encoding ( $str, "ASCII,JIS,UTF-8,CP51932,SJIS-win", true ) );
0739nobodyさん
2017/01/15(日) 17:28:16.80ID:???0740nobodyさん
2017/01/15(日) 17:39:16.09ID:jnaaL6KKバカ発見
0743nobodyさん
2017/01/15(日) 17:52:26.02ID:???誤解を招きそうで怖いけど
0744nobodyさん
2017/01/16(月) 10:18:57.25ID:eoF1W14nファイル情報を取得して判断しようとしても上手く行かないんですが何か専用の関数とかあるんでしょうか?
0745nobodyさん
2017/01/16(月) 10:21:51.42ID:???http://php.net/manual/ja/function.file-exists.php
0746nobodyさん
2017/01/16(月) 10:26:39.45ID:???全ファイルの取得とかは考えないほうがいい
0747nobodyさん
2017/01/16(月) 10:38:44.23ID:eoF1W14n例えば、http://hogesite/movie/hoge.mp4 をfile_exists()で確認しようとすると、どちらもfalseが返ってくるんですよね・・
でも実際は存在するファイルは読み込むことができるんですよね
他にはstat()やheader()でやろうとしてもダメでした
0748nobodyさん
2017/01/16(月) 10:42:39.71ID:???get_headers()
だな
0749nobodyさん
2017/01/16(月) 10:53:20.56ID:???0750nobodyさん
2017/01/16(月) 13:45:22.96ID:???class c {
public $n;
public function __construct() {
$n = new $this;
}
}
(new c());
0751nobodyさん
2017/01/17(火) 21:14:32.74ID:LeG/+lw1セキュリティ画面がなくなって居たのですが
何も設定しなくて良いのでしょうか?
一応mysqlのユーザーパスは変えました
それだけでおけ?
■ このスレッドは過去ログ倉庫に格納されています