トップページ⇒php
1002コメント311KB

PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net2016/10/17(月) 21:44:12.59ID:???
PHP関する質問や雑談をするスレです。
初心者お断り(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の改造
0696nobodyさん2016/12/30(金) 08:33:26.83ID:???
PHPStormのカスタマイズについて教えてください。

PHPStormで、カーソル位置がPHPの関数の文字列にあるとき、
F1 キーを押すとPHP日本語ヘルプでその関数の説明をを表示する
ようにしたいです。

ご存じの方いましたら教えてください。
0697nobodyさん2016/12/30(金) 15:55:58.57ID:???
>>695
アホまるだし

>>696
スレチ
0698nobodyさん2016/12/31(土) 09:50:53.91ID:???
Windowsで環境変数にphpのpathを通したので、
コマンドラインからphp xxxx.phpで実行出来るようにはなったのですが、
xxxx.phpにpathを通しても、exeのように、
xxxx.phpあるいはxxxxとうつだけでは実行はできませんよね?
0699nobodyさん2016/12/31(土) 18:38:55.23ID:???
やってみればいいじゃん(いいじゃん)
0700nobodyさん2017/01/01(日) 11:56:44.00ID:???
聞き方が悪かったようですね。
>>698では出来ないので実行出来るならやり方を教えて下さい。
0701nobodyさん2017/01/02(月) 01:05:14.21ID:???
Windowsは拡張子と実行プログラム関連付けできるから
インタプリタを関連付ければできそうな気がするが
0702nobodyさん2017/01/02(月) 13:55:50.76ID:???
>>701
適当な拡張子をつけてphp.exe(CLI)に関連付けしてみると、
拡張子までうつと実行は出来るようになりました。
しかし$argvがどうも受け取れないようで、意図した動作にはならず、
何をしてもエラー処理部分に常にいってしまいます。
0703nobodyさん2017/01/02(月) 23:43:58.27ID:???
Pythonの例で説明するけど、
個別のファイルを、実行可能にするには、そのファイルの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:???
LINE一番人気の可愛いビールスタンプ。
呑みのお誘いや二日酔い報告にどうぞ!

【ビール大好きくんサマー】
http://らいん.me/S/sticker/1292996

(URLは「らいん」→「LINE」に置き換えてね)
0705nobodyさん2017/01/04(水) 00:47:47.02ID:???
>>703
・pythonを例にすることでのメリットがない
・windows
0706nobodyさん2017/01/04(水) 16:24:22.71ID:???
>>705
キッチリ屋サン
0707nobodyさん2017/01/05(木) 03:11:52.93ID:???
ローカル環境でテストしたPHPMailerを
共用サーバーで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:???
初心者はお帰り下さいませ。。。
0709nobodyさん2017/01/05(木) 10:40:40.10ID:???
>>707
> できれば無料サーバーだとありがたいです
なめてんの?
0710nobodyさん2017/01/05(木) 15:54:28.15ID:???
>>707
PHPMailer以外ではSMTP認証できるのか?
話はそこからだろ
0711nobodyさん2017/01/05(木) 16:14:42.57ID:???
>>707
http://www.2by2host.com/articles/php-errors-faq/disabled_fsockopen/
0712nobodyさん2017/01/05(木) 19:45:58.54ID:???
最近PHPの配列をよく使うようになった。
以前はDBばかり使っていたのでほとんど気にしていなかったが、
PHPの配列関連のメソッドって本当にマジキチだな。

PHPの不評の大部分(整合性のとれていない引数やメソッド名)って、配列関連じゃねーの?
0713nobodyさん2017/01/05(木) 19:48:19.67ID:???
そうだと思うよ。
配列処理増えてきたころって一番文句を言いたくなる時期とかぶるような気もするし。
0714nobodyさん2017/01/05(木) 22:59:29.94ID:???
LaravelのCollection神
0715nobodyさん2017/01/05(木) 23:51:50.16ID:???
>>707
その引数、$errno, $errstr にエラーメッセージが書いてあるんじゃないの?

それには、何て書いてある?
0716nobodyさん2017/01/06(金) 18:12:45.72ID:???
>>712
配列関連の関数は、なにも不満なく使ってるけどな。
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:???
PHPの配列は参照と明示的に組み合わせて使ったときの非直感的振る舞いがアレ
マニュアルに書いてある通りではあるんだけれども
0720nobodyさん2017/01/07(土) 19:08:36.10ID:???
>>719
具体的にコードを書いてくれないと意味がわからん。
0721nobodyさん2017/01/08(日) 11:32:12.90ID:???
マニュアル見ないと挙動がわからんのが批判されてるところだからな。

普通はマニュアルなんて見なくてもある程度予想がつく。
0722nobodyさん2017/01/08(日) 15:36:28.98ID:???
プロPHPerさんの知恵を貸してください

[
'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:???
foreach
$new[] = explode [0] => [1]
0725nobodyさん2017/01/09(月) 00:19:28.37ID:???
$test = array(
0726nobodyさん2017/01/09(月) 00:21:23.01ID:???
$test = array("a" => "a");
$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:???
>echo "$test[a]<br>"; // OK
マジかよと思ったら本当にこれ動いたわw
0728nobodyさん2017/01/09(月) 07:11:47.79ID:???
$a = ["b"=>"c"];
$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:???
>>726
? echo "$test[$test2[a]]<br>"; // SYNTAX ERROR

◎ echo $test[$test2["a"]];

こうじゃないの?
0730nobodyさん2017/01/09(月) 17:19:48.21ID:???
>>727
二重引用符の文字列展開は基本ゾ・・・
0731nobodyさん2017/01/09(月) 17:34:23.33ID:???
>>730
とりあえず{}で囲むのが基本やとおもう
['a']ならまだしも$test[a]はそのまんまだとエラー出るしなあ
0732nobodyさん2017/01/09(月) 17:42:55.69ID:???
echo "b{$test[$test2["a"]]}c";
0733nobodyさん2017/01/09(月) 22:53:04.00ID:bmjPRAaj
echo mb_detect_encoding($maxnko, "JIS,SJIS,eucjp-win,sjis-win,UTF-8");

PHPで文字列の文字コードを判別する場合、
この様に引数に予め複数の文字コードを列挙する必要があるのでしょうか?

感覚的には、mb_detect_encoding関数の引数に
調査対象の文字列を入れれば、自動で文字コードが検出されるものかと思っておりました。
0734nobodyさん2017/01/10(火) 01:43:45.43ID:???
>>725-726
2chのバグだろう

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?

それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった

>>733
その関数のドキュメントに、使い方は書いてないの?
0735nobodyさん2017/01/10(火) 01:48:53.38ID:???
>>733
残念ながら文字コード検出は「難しい」処理で, 一般には一意に決定出来ない
ICUでもiconvでもnkfでも推測は出来ても決定は出来ない
文字の符号化方式は無数に存在するからな

だから候補を挙げておいてそこから選ばせる必要がある
0736nobodyさん2017/01/10(火) 06:10:16.00ID:???
>>733

mb_detect_encoding
と
mb_convert_encoding

を混同してない?
0737nobodyさん2017/01/10(火) 10:53:00.59ID:???
>>733
それやらないと文字コードを誤検出してかなりダルイ

// utf-8に変換する時は脳死でこう
$str = mb_convert_encoding ( $str, "UTF-8", mb_detect_encoding ( $str, "ASCII,JIS,UTF-8,CP51932,SJIS-win", true ) );
0738nobodyさん2017/01/10(火) 11:05:09.98ID:bVLvPFIi
>>735
サンクス なるほど。

>>736
してないです!


>>737
丁寧にサンクス!
0739nobodyさん2017/01/15(日) 17:28:16.80ID:???
SESSIONって、要するにサーバー版のcookieですか?
0740nobodyさん2017/01/15(日) 17:39:16.09ID:jnaaL6KK
↑
バカ発見
0741PHPネ申2017/01/15(日) 17:48:12.63ID:???
>>739
スーパーグローバル変数ですよ
0742nobodyさん2017/01/15(日) 17:48:30.19ID:???
>>739
ざっくり言うとその通り
0743nobodyさん2017/01/15(日) 17:52:26.02ID:???
ローカルファイルに保存して毎回読み込んでいるという点は同じ
誤解を招きそうで怖いけど
0744nobodyさん2017/01/16(月) 10:18:57.25ID:eoF1W14n
外部サイトにあるmp4ファイルの存在を確認するにはどうすればいいでしょうか?
ファイル情報を取得して判断しようとしても上手く行かないんですが何か専用の関数とかあるんでしょうか?
0745nobodyさん2017/01/16(月) 10:21:51.42ID:???
>>744
http://php.net/manual/ja/function.file-exists.php
0746nobodyさん2017/01/16(月) 10:26:39.45ID:???
あとファイルの総浚いに対抗するためにUAなどで弾かれてる可能性もある
全ファイルの取得とかは考えないほうがいい
0747nobodyさん2017/01/16(月) 10:38:44.23ID:eoF1W14n
>>745
例えば、http://hogesite/movie/hoge.mp4 をfile_exists()で確認しようとすると、どちらもfalseが返ってくるんですよね・・
でも実際は存在するファイルは読み込むことができるんですよね
他にはstat()やheader()でやろうとしてもダメでした
0748nobodyさん2017/01/16(月) 10:42:39.71ID:???
あれ、file_exists()外部ファイルで使えなかったか、ごめん
get_headers()
だな
0749nobodyさん2017/01/16(月) 10:53:20.56ID:???
用途にも依るけどリダイレクト含めて200レスポンスが返ってくるかどうかなんだろうけどねぇ
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
スレチかもですが今日xamppアプデしたら
セキュリティ画面がなくなって居たのですが
何も設定しなくて良いのでしょうか?
一応mysqlのユーザーパスは変えました
それだけでおけ?
0752nobodyさん2017/01/17(火) 21:16:12.54ID:???
セキュリティ画面とは
0753nobodyさん2017/01/17(火) 21:20:49.76ID:LeG/+lw1
結構古いカモですが
オレンジっぽい画面で
セキュリティの警告が出たりしてました
そこで何やらゴニョゴニョやった気が…
今はもう大丈夫なんですかね?
0754nobodyさん2017/01/17(火) 21:28:58.78ID:???
http://localhost/xampp/みたいな画面のやつか?
あんなの公開鯖じゃないんだしどうでもよかろうもん
0755nobodyさん2017/01/17(火) 21:32:55.35ID:???
PHPのビルトインサーバで物足りなくなったらXAMPPでもApacheでもnginxでも入れれば宜しいと思うの
0756nobodyさん2017/01/17(火) 21:37:26.37ID:???
>>754
あーあれか。いつもすぐに消してたな。

>>751
別に誰か触るわけじゃないからユーザーパスなんて無くて良くないか
それよりもmysqlのユーザーとパスを本番環境に合わせておくといいぞ
rootでテストすると思わぬところでひっかかる、というかひかかった
0757nobodyさん2017/01/17(火) 22:09:14.22ID:LeG/+lw1
>>754
そうです。調べた所、なくなったみたいですね。

>>756
私も昔やっちまいました。

みなさんありがとうございます。
0758nobodyさん2017/01/18(水) 10:03:47.04ID:p0EF6Ec+
https://youtu.be/quIHgwuF6r4
0759nobodyさん2017/01/18(水) 23:47:21.59ID:wplrfJOQ
なんでphpは文字列を ' シングルクォーテーションで囲むの?

普通は、 " ダブルクォーテーションでしょ?
0760nobodyさん2017/01/19(木) 00:07:37.89ID:???
>>759
Perlに訊くべきだな
0761nobodyさん2017/01/19(木) 00:14:32.60ID:???
>>759
それ言い出すとどの言語にも変なところの一つや二つつある
0762nobodyさん2017/01/19(木) 00:20:28.47ID:???
シングルであることはmustではない
シングルでも書けるが正解
普通はダブルだと思うならダブルを使えばいい
0763nobodyさん2017/01/19(木) 00:22:12.50ID:???
キーボード「7」の位置にあるからシングルコーテーション嫌い
0764nobodyさん2017/01/19(木) 00:24:08.99ID:HOa0/Opm
>>760
Perl は嫌い

>>761 >>762
もともとC#から入ってる俺からすると生粋のPHPerが ' で文字列を括るのに
本当に嫌悪感を感じる。

また
if ( true ){
}

じゃなくて普通は
if( true )
{

}
じゃないか?
0765nobodyさん2017/01/19(木) 00:28:38.25ID:???
ブロックはこう
if ( true ){
}
functionはこう
function()
{
//foo
}
0766nobodyさん2017/01/19(木) 00:30:46.07ID:???
>>764
PHPはPerlからの影響もかなり強い
C#と違ってな

あとコーディング規約でしかないことを必要以上に押し付けるのは宗教の押し売りと変わらんぞ
0767nobodyさん2017/01/19(木) 00:42:20.14ID:???
>>764
コーディング規約なんてどうでもいいだろ
Javaの影響が強いEclipse使ってれば上になるし
C系の影響が強いVS使ってれば下になる
PHPもPEARコーディング規約は上でZendコーディング規約が下と分かれてるし
PHPerに人気のPhpStormも下だから下の書き方のやつは多い
0768nobodyさん2017/01/19(木) 00:46:22.49ID:???
>>767
流石に現代ではZendコーディング規約は兎も角, PEARよりPSR-2を挙げるべきだと思うの
0769nobodyさん2017/01/19(木) 08:11:03.40ID:???
>>759
変数展開するかしないかの違いがあるよね。
0770nobodyさん2017/01/19(木) 11:55:42.84ID:???
コードを最適化するコンパイラをもつC#と比べるのがそもそもナンセンスなんだがな
0771nobodyさん2017/01/19(木) 11:56:43.28ID:???
それちょっと地学ない
0772nobodyさん2017/01/19(木) 12:27:11.30ID:HOa0/Opm
phpでフレームワークは使わずに
DBからデータを検索しようとしています。

例えば社員IDが 3,5,7
の3つを検索しようとした場合
PHPで文字列編集を行ってSQLを

EMPLOYEE_ID IN ( 3 , 5, 7)

と組み立てて実行してますが、もっとスムーズにやる方法はありませんか?
0773nobodyさん2017/01/19(木) 12:36:39.34ID:???
>>772
お前さんがどうやってるのか分からないのにもっと効率的とは是如何に
0774nobodyさん2017/01/19(木) 14:50:03.82ID:???
文字列編集?これ脆弱性作るやつだ・・・
0775nobodyさん2017/01/19(木) 15:27:39.67ID:HOa0/Opm
>>773

あー、cakePHP使ってる時には確か検索した対象データを
配列に詰めて渡せば、内部的にINに組み込んでくれるっていう便利な機能があったはずなんだけど・・・・

プレーンなphpじゃないか。やっぱりFW使っておいた方が良かったかな。
0776nobodyさん2017/01/19(木) 16:30:05.73ID:???
>>775
> あー、cakePHP使ってる時には確か検索した対象データを
> 配列に詰めて渡せば、内部的にINに組み込んでくれるっていう便利な機能があったはずなんだけど・・・・
その程度、自分で実装しろよ
0777nobodyさん2017/01/19(木) 18:29:18.38ID:???
プレーンなC#にもないよね
0778nobodyさん2017/01/19(木) 19:46:23.77ID:???
C#erとか強そうなのがやってきたと思ったら、ただの雑魚だったっていう・・・
0779nobodyさん2017/01/19(木) 20:17:56.32ID:???
C#は完全にjavaに食われたな
もっと伸びると思ってたんだけどなぁ
0780nobodyさん2017/01/19(木) 20:39:55.91ID:???
PHPスレは、>>775この程度のやつがいっちょまえな感じで書き込みするから嫌なんだよ
0781nobodyさん2017/01/20(金) 02:52:58.31ID:???
普通は
if( true )
{

}
じゃないか?

この時点で強そうじゃないのはわかるでしょう。どこの畑で育つとこうなるのか
0782nobodyさん2017/01/20(金) 03:30:32.80ID:???
発芽してないから
0783nobodyさん2017/01/20(金) 11:13:42.22ID:???
>>781
phpマニュアルは
if () {
0784nobodyさん2017/01/20(金) 11:14:45.43ID:???
>>781
http://php.net/manual/ja/functions.user-defined.php
phpマニュアルは以下のようになっている
if() {
}
function()
{
}
phpマニュアルに合わせているよ
functionはエディタで見やすくなるって聞いたけど、ifブロックがなぜこうなっているかはよくわからない
0785nobodyさん2017/01/20(金) 13:07:11.97ID:???
phpマニュアルは以下のようになっている
if() {
}

なってないでしょ
0786nobodyさん2017/01/20(金) 14:15:57.82ID:???
一体なんのために>>785みたいなレスするのか不思議だ
0787nobodyさん2017/01/20(金) 14:25:18.33ID:???
>>785
確認しやすいようにURLまで漬けてんだから見てくれよwwww

あとなってない場所を教えてくれ。修正しとくわ
0788nobodyさん2017/01/20(金) 14:50:46.62ID:???
相手しちゃダメよー
0789nobodyさん2017/01/20(金) 15:51:26.02ID:???
curl関数のcurl_setopt()のそれぞれのオプションの初期値を確認する方法ってあります?
http://php.net/manual/ja/function.curl-setopt.php
ここにデフォルトはあれあれ通常はこれこれと書いてあるものもあるけど
大半は記述がないのでどうしてくれようかと
0790nobodyさん2017/01/20(金) 16:02:55.09ID:???
>>787
コーディングスタイルはカーリーブレースの位置を決めるだけじゃないよ
>>783に対しては安価をつけてないでしょ。
同じ意味で、>>781を書いた。(これはもちろん >>764 の引用。)
0791nobodyさん2017/01/20(金) 16:21:48.17ID:???
さわるな危険
0792nobodyさん2017/01/20(金) 16:44:19.89ID:???
初心者向けの話題は初心者スレで
0793nobodyさん2017/01/20(金) 16:49:03.04ID:???
>>789
なんでコード読まないの?
0794nobodyさん2017/01/20(金) 16:58:41.09ID:???
コードを読まないで生きていけるのならば、皆そうすべきである
0795nobodyさん2017/01/20(金) 17:19:57.45ID:???
・マニュアルには網羅的な説明がない
・ちょっとググったけど情報が見当たらない
・コードは見られる

なら、コード見るのが最速だよな
■ このスレッドは過去ログ倉庫に格納されています