IT技術に関する情報掲載サイト

プログラミングに関することを掲載します。

なぜかファイルに書き込めことができない

サイトがうまく表示されないという障害が起こって、色々しらべてみると、どうも、ファイルに書き込みができないことがわかりました。ファイルに書き込めないと言う場合、普通、ディスク容量がいっぱいということがおおいのですが、df -kでしらべてみても、ディスクの使用率は、100%になっておらず。じゃあ、書き込もうとしているフォルダやファイルにアクセス権限がないのかと思い、あまりよくないけど、それぞれの権限をchmod 777でアクセス権限を解放してみてけど、まだ、治らず。すごく困っていろいろしらべてみたのですが、どうも、ファイルがたくさんありすぎで、inodeがいっぱいになってしまったらしい。

inodeとは

inode(アイノード)は、ext2などのUnixファイルシステムで古くから使われているデータ構造である。 inode にはファイル、ディレクトリなどのファイルシステム上のオブジェクトに関する基本情報が格納される。

余計なファイルを削除したら、なおりました。

inodeの使用率は、調べるには、df -iでしらべることができます。

ファイルシステムによりますが、なかなかおこらないと思いますが、しっておいてそんはないことかと思います。

 

ERROR: failed to prepare the stderr pipe: Too many open files (24)

ERROR: failed to prepare the stderr pipe: Too many open files (24)

なんのエラーかというと
fastcgi  php-fpm開いているファイルが多すぎる
ためです。

大規模サイトや複数サイトを一括して管理しているとどうしても、デフォルトで設定している値を超えてしまう場合があります。

現在の値を確認するためには、

ulimit -n

を実行するとわかります。

変更の仕方としては、/etc/php-fpm/www.confにかかれている

rlimit_files = 65535

を変更して、php-fpmとアパッチの再起動をすれば、反映完了となります。

 

なかなかこの設定を変更する機会がすくないのですが、覚えておくと便利かもしれません。

 

Got error 'PHP message: PHP Warning: Illegal string offset 'remember'

Wordpressの古いバージョンで、PHP7系列で動かした際に、

Got error 'PHP message: PHP Warning: Illegal string offset 'remember'

 とエラーとなった場合、対応方法。

 wp-login.phpの以下の部分を修正すれば、なおります。

$user = wp_signon( '', $secure_cookie );

$user = wp_signon( array(), $secure_cookie );

 

もちろん、Wordpressの最新バージョンでは対応済みですが、なんらかの理由でバージョンアップできないときに参考にしてください。

 

PHP7では、変数が配列かどうかのチェックを厳しくしているので、ご注意ください。

Macでsshをしたときに"error: buffer_get_ret: trying to get more bytes 3 than in buffer 0"とでたときの対処法

Macsshをしたときに"error: buffer_get_ret: trying to get more bytes 3 than in buffer 0"とでたときの対処法をご紹介

ターミナルを使って、sshで遠隔でサーバにログインしようとした際に、パスワードはあっているのに、エラーとなってログイン出来ないときがありました。エラー内容は、

error: buffer_get_ret: trying to get more bytes 3 than in buffer 

です。

色々ネットで調べてみると、どうも、最初にログインする際に作成される公開鍵の作成に失敗してしまったようです。

直し方としては、

~/.sshにあるknown_hostsに対象サーバの公開鍵が記述されているので、一旦その行を削除し、再度sshでログインできれば、ログインできます。

エラー内容から、エラーの原因がわからず、知らないとできないエラーだと思いますので、知っとくといいかもしれません。

 

Lets Encryptで証明書更新時にError: couldn't get currently installed versionと出たときの対応方法

 

Lets Encryptで証明書更新時にError: couldn't get currently installed versionと出たときの対応方法は、2パターンある

 

  1. 既存で登録されているcertbot-autoのバージョンが合わないので、入れ直し。certbot-auto実行時にこちらのディレクトリが再生成されるようなので削除して再実行します。

    # rm -r /opt/eff.org/certbot/

    # ./certbot-auto --debug -v

    # /usr/bin/certbot-auto renew --force-renew

     

  2. ”/opt/eff.org/certbot/venv/bin”直下にあるpipを使って以下のようにLet’s Encryptのモジュールを更新する方法

    //環境変数を削除

    # unset PYTHON_INSTALL_LAYOUT

    //Let's Encryptモジュールを更新

    # /opt/eff.org/certbot/venv/bin/pip install --upgrade certbot

1がだめだったら、2をやってみるとうまくいくかもと思います。

両方ともそれぞれが終わったら、Apacheの再起動を忘れずに。

基本cronで自動更新できるようにしたほうがらくだね、

EC-CUBE3で税抜き価格を表示する方法は?

EC-CUBEのバージョン3でデフォルトは、税込価格の表示になっておりますが、どうしても、商品一覧、商品詳細ページで、税抜価格を表示させたい場合は、テンプレートの修正が必要となります。

 

■対象テンプレート

  1. 商品一覧
    /src/Eccube/Resource/template/default/Product/list.twig
  2. 商品詳細
    /src/Eccube/Resource/template/default/Product/detail.twig

■変更内容

以下の関数のIncTaxを削除

<変更前>

{{ Product.getPrice01IncTaxMax|price }}

{{ Product.getPrice01IncTaxMin|price }}

{{ Product.getPrice02IncTaxMax|price }}

{{ Product.getPrice02IncTaxMin|price }}

  

<変更後>

{{ Product.getPrice01Max|price }}

{{ Product.getPrice01Min|price }}

{{ Product.getPrice02Max|price }}

{{ Product.getPrice02Min|price }}

 

こんな感じで簡単に変更ができますので、試して見て下さい。

 

MariaDBでのユーザアカウントの新規追加方法

Mysqlから派生したMariaDBでユーザアカウントを追加しようとしたら、なぜか‥

Mysqlでは、できた方法ができなかったので、忘れないようにメモしとこう。

 

-- mysqlに接続

#mysql

-- 新しくユーザーを作成する

CREATE USER wordpress_test@localhost

-- 作成したユーザーに作成したデータベースの操作権限を付与する

GRANT ALL PRIVILEGES ON wordpress_test.* TO 'wordpress_test'@'localhost';

-- 作成したユーザーのパスワードを設定

SET PASSWORD FOR 'wordpress_test'@'localhost'=password('yourpasswod');

-- 設定を反映する

FLUSH PRIVILEGES;

 

基本的な流れは、一緒だけど、なぜか、パスワードの設定のところだけどうまくいかなかったので、別SQLでパスワードを設定しました。