mk-toolブログ

エンジニアと家のことをごちゃごちゃと書いてます

【php】arraylistに特定の文字列が入っているかを確認する

in_arrayを使用して実施するので、使い方はPHP: in_array - Manualを読んでください。

in_arrayメソッドには、第一引数で指定した値が、第二引数の配列に存在するかを評価し、boolean型で結果を返却してくれます。
オプションとして第三引数に評価の仕方を指定でき、「false」を指定すると「==」のような評価を行い 「true」にすると「===」の評価を行います。

「==」の評価では、何がtrueになり、何がfalseになるかをよく知っておく必要があります。
この公式サイト(PHP: PHP 型の比較表 - Manual)みると、「"php" == 0 」が「true」になるという恐ろしい事態が。。。


また、線形探索を行うので配列が大きいほど結果の返却に時間がかかることを抑えておきましょう。



参考
qiita.com

【nginx】"fastcgi://unix:/var/run/php/php7.0-fpm.sock:"がないよと言われる

「/var/run/php5-fpm.sock」のソケットファイルを使用して欲しいのに。。。
ここの設定の変更には「/etc/nginx/sites-available/homestead.app」から
設定の変更を行う。

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

fastcgi_pass unix」の部分を「fastcgi_pass unix:/var/run/php5-fpm.sock;」にすればいけた。

【vagrant】vagrantでタブ文字が設定ファイルに含まれていたせいでエラー

以下のエラーが出てきたのでメモ。

 

>||

/opt/vagrant/embedded/lib/ruby/2.2.0/psych.rb:370:in `parse': (<unknown>): did not find expected '-' indicator while parsing a block collection at line 15 column 6 (Psych::SyntaxError)

||<

 

これ、本当に冗談かもしれないけど、設定ファイルにタブ文字とか、全然見た目わからないけどもかなり影響してるみたい。

エラーとしては「psych.rb」のファイルがおかしいと言われているが、とりあえず自分の手を加えたファイルで変なラブ文字がないかを探すのが良いと思う。タブ文字を表示できるエディタで手を加えたファイルを見てみたり、地道にコメントアウトをして調べたり。。。

 

私の場合は、Laravelの「~/.homestead/Homestead.yaml」ファイルの設定変更をしている際に発生。

この設定ファイルの自分が手を加えた部分を地道にコメントアウトしていってエラー箇所を絞って直した。

【vagrant】vagrant upでエラー

vagrant upをしたら、このようなエラーが発生。
調べてもあまり解決策と言えるものがなかったので、日本語メモ。

The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.

というエラーが出たら、virtualboxのネットワークの設定に問題があるので、確認をする。

赤い枠を部分をクリックして、
f:id:gamushiroS:20160807073005p:plain
環境設定をクリックする。macで行っているが、windowsも同じような部分があると思う。
f:id:gamushiroS:20160807073209p:plain
以下のような画面が出てくるので、赤枠で囲った部分を選択する。
そうすると、「vboxnet0」「vboxnet1」などが出てくる。
f:id:gamushiroS:20160807073359p:plain
「vboxnet0」「vboxnet1」のどちらかをダブルクリックして、設定されているIPアドレスを確認する。
f:id:gamushiroS:20160807073631p:plain

このIPと、vagrant upをする際に必要なIPを設定したファイルのIPがあっているかを確認する必要がある。
私は、Laravelを使用しているので、「~/.homestead/Homestead.yaml」に「ip: "192.168.33.1"」を
設定した。
これで「vagrant up」に成功する。

【mysql】mysqlで度重なるエラーで困った話

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'

これは「mysql」が起動されていないことが原因で発生するので、

mysql.server start

で起動できるはず。。。


でも、その次に「mysql -uroot」をしても

. ERROR! The server quit without updating PID file (/usr/local/var/mysql/********-no-MacBook-Pro.local.pid).

と出てきた。

この解決はファイルの所有権の変更、もしくはmysqlのプロセスを一度消すことで起動できるようになる。

ファイルの所有権の変更に関しては、

sudo chown -R _mysql:_mysql /usr/local/var/mysql

プロセスの削除に関しては、以下のコマンドで、mysqlが起動されているか確認をする。

ps -ef | grep mysql

このコマンドを実行すると、以下の順序でプロセスの情報が出力されるため、左から2番目のPID番号をメモしておく。
UID,PID,PPID,C,STIME,TTY,TIME,CMD
そして、以下のコマンドを実行。

sudo kill -9 [PID番号]

しかし、私の場合はよく分からないが先の「ps」コマンドで調べたPID番号を入力してもプロセスをkillすることができなかった。
え?と思ってもう一度「sudo kill - p [PID番号]」をやると、 PID番号が変わっていた。
は?と思って、何度も「sudo kill - p [PID番号]」をやるとPID番号がコマンドを実行するたびに2ずつ増えているでありませんか。
そのため、今のPID番号+2のPID番号を指定すれば。。。というおかしな勘でやってみるとプロセスをkillできた。
killができても、「ps -ef | grep mysql」をしてもまだプロセスが残っているがように見えるが、古いプロセスがkillされて
新しいプロセスが生成された、ぐらいに考えてここはこれでいいことにしよう。。。

mysql -uroot

mysqlに入れる。


参考
easyramble.com