かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

yarn globalにインストールする時に気をつけること

yarn runでローカルパッケージが実行できるのが便利でyarnをメインで使っています。
フリーランスで色々なプロジェクトに関わっていると、プロジェクトごとにモジュールのバージョンを揃えておいたほうが安全なので基本的にパッケージはプロジェクト配下(ローカル)にインストールする方が安全なのでyarnでローカルにモジュールをインストールしてyarn runでローカルパパッケージから実行する方法がたいへん便利です。

だた個人でやってるプロジェクトなら都度ローカルにインストールしておくとnode_modulesフォルダがHUUUUUUUGIになってしまう問題もあるのでよく使うものはグローバルにインストールしたほうが良さげな場合もあります。
で、yarnでグローバルにインストールする際に罠があったのでメモ

yarnでグローバルにインストールする場合はglobalオプションを付ける場所に注意が必要!

*yarnでグローバルにインストール**

$ yarn global add <package name>

注意: npm における --global フラグとは違い、 globalyarn の直後に続く必要があるコマンドです。 yarn add global package-name と入力した場合、package-name というパッケージをグローバルにインストールするのではなく、 global および package-name という名前のパッケージをローカルに保存します。
出典: yarn global | Yarn

npmの癖で

$ yarn add global <package name>

としてしまうと、グローバルとローカル両方にパッケージがインストールされてしまうようです ( ´△`) アァー
気をつけよ...


[参考]

にゃーん

WordPress PHP 7.x でデータベース接続確立エラー

PHP 7.3にして、WordPressをみてみたら「データベース接続確立エラー」の表示。お久しぶりっす!!
データベースのユーザー名・パスワードに変更がない・MySQLのバージョンを変更していないならphp.iniでの接続設定に問題がありそう。

mysqlのsocketの設定をみてみる

php.iniの場所を調べる

$ php --ini
Configuration File (php.ini) Path: /Users/<USER_NAME>/.phpbrew/php/php-7.3.1/etc
Loaded Configuration File:         /Users/<USER_NAME>/.phpbrew/php/php-7.3.1/etc/php.ini

php.iniを開いてdefault_socketで検索。
mysqli.default_socketに何も設定されてなかったのが原因のようです。

[MySQLi]
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket = /tmp/mysql.sock

PHP7.3とPHP5.6のphp.iniにあるdefault_socketの違いのメモ

socket PHP7.3 PHP5.6
pdo_mysql.default_socket あり あり
mysql.default_socket なし あり
mysqli.default_socket あり あり

PHP7ではmysql_connect関数が削除されたためでしょう。mysql.default_socketが存在していません。
PHP5系のときはmysql.default_socketだけ設定しておけばWordPressとのデータベース接続は出来ていたのですが、PHP7からはmysqli.default_socketにsocketのパスを設定しておかなければWordPressが「データベース接続確立エラー」になってしまいます。pdo_mysqlだけではWordPressはダメみたいです。(PHP5.xでもmysqliに設定しておくほうが良さそうな気がしますが...

PHP7を入れ直したので設定し忘れでした... orz


[参考]

mysql_connect
警告 この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。
出典: PHP: mysql_connect - Manual

詳細! PHP 7+MySQL 入門ノート

詳細! PHP 7+MySQL 入門ノート

MySQL mysql.socketがどこにあるか探したい。

php.iniとかに設定するmysql.socketのパス。
設定が必要になる頃には覺えてないし、アップデートとかでパスが変わってるかもしれないのでmysql.socketがどこにあるか探す方法のメモ

mysql_config --socket コマンドを使う

$ mysql_config --socket
/tmp/mysql.sock

MySQL起動させて無くてもパスが表示されます。

mysql.socketが存在しないときは生成させることも出来るようです

  1. /etcmy.cnfファイルを作成
  2. my.cnfに下記を記述
    [mysqld]
    socket=/var/mysql/mysql.sock
    [client]
    socket=/var/mysql/mysql.sock
    
  3. mysqld_safeを実行
    $ sudo /usr/local/mysql/bin/mysqld_safe
    

参考

以前パスが有るべき場所にtouch mysql.socketって空ファイル生成したら問題なくMySQLが起動したことがあって、イマイチこのmysql.socketが何者なのか解ってないです。
俺たちは雰囲気でコーディングしてる...


[参考]

👇プラグの差込口のこと「ソケット」って呼ぶのですね。学んだ