PHP
マサの3つの『ツイッター録』<食洗機・Docker・Laravel>【3】
【Laravel備忘録】Formsヘルパーの「Class ‘Form’ not found」
【Laravel備忘録】「laravelium/sitemap」でサイトマップインデックスがフルパスにならない問題
【備忘録】Eclipseの「PHP 言語ライブラリー」のバージョン変更方法
【Docker備忘録】nginxで複数ポートで複数サイトを設定する
【PHPエラー備忘録】HTTP ERROR 500「Allowed memory size of xxxxxxxxx bytes exhausted」
【Laravel備忘録】MariaDBエラー「General error: 1615 prepared statement needs to be re-prepared」
【Laravel備忘録】Laradockの「php artisan migrate」のエラー解消
【PHPエラー備忘録】Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 12288 bytes)
「Crayon Syntax Highlighter」と<pre>タグで表示がくずれる問題
【WordPress】今使っているプラグインとプラグインを外しコードを記述して代用したもの – Shufulife
PHP: 下位互換性のない変更点 – Manual
PHP5.6からPHP7へ移行!!
Smartyにおけるテンプレート側での多次元配列の書き方
「WordPress」で「sitemap.xml」がメモリオーバーで生成されてなかった
サイト更新:電卓相性チェッカー
サイト制作:正確な年齢チェッカー alpha1
サイト制作:正確な年齢チェッカー alpha1
「mysqlnd」を使ったPHPによるMySQL接続方法
前回の記事にも書いたが、PHPを5.5にアップデートすると、
「php-mysql」が「php-mysqlnd」に置き換わるため、
以前のMySQLで作られていたユーザーのパスワードが古い形式のままの場合、
DBへ接続できない現象が発生する。
※yumによるアップデート
php-mysqlnd i686 5.5.0-0.28.beta4.el6.remi remi-test 248 k replacing php-mysql.i686 5.4.14-1.el6.remi
DB(mysql-userテーブル)を見てみると、
rootのパスワードは新形式の長いタイプのパスワードだが、
その他は短い古い形式のパスワードだった。
★ユーザーパスワードの確認 (DB:mysql / table:user)
よってパスワードを新形式へアップデートする事で解決できる!
※DB変更後は、必ずMySQLのサービスを再起動!
-
SET PASSWORD FOR '対象のユーザー名'@'対象のホスト名' = PASSWORD('対象となるユーザのパスワード');
※上記SQLでOKだが直接updateしても変更できる、というか上の方がスマートだと知らなかった^^
-
UPDATE
-
`mysql`.`user`
-
SET
-
`Password` = PASSWORD ('対象となるユーザのパスワード')
-
WHERE
-
`user`.`Host` = '対象のホスト名' --(ユーザー名がユニークの場合は必要なし)
-
AND `user`.`User` = '対象のユーザー名'
-
;
「mysqlnd」を使ったPHPによるMySQL接続方法
PHPからMySQLに接続できない:mysqlnd
remi-testからPHP5.5にアップデートすると、PHPからMySQLのデータベースに接続できない事態が発生した。
理由は以下の通り。
・「php-mysql」が廃止されて、「php-mysqlnd」に置き換わった
・「php-mysqlnd」でmysql_connect()系関数を使用した際、MySQLの古いパスワードフォーマット(16バイト)を使うとDBに接続できない
ソース:PHP:下位互換性のない変更点
よって対処方法としては、
1.「php-mysqlnd」を使わないで「php-mysql」を使う
※今後の事を考えれば「php-mysqlnd」を使ったほうがいいかもしれない・・・
2.MySQLのパスワードを設定し直す
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('パスワード');
※ただし、「my.cnf」に
old_passwords=1
とある場合は旧パスワードが有効になっているので、
old_passwords=0
と無効にする必要あり。設定が有効の場合に旧パスワードで設定するには
SET PASSWORD FOR 'username'@'hostname' = OLD_PASSWORD('パスワード');
で設定すればOK。
PHPからMySQLに接続できない:mysqlnd
PHP5.5系のアップデートでMySQLへ接続できず!!?
タイトル通り、先程PHPのバージョンを「remi-test」リポジトリから5.5系へアップデートしようとしたら、
「データベース接続確立エラー」が表示されてしまった・・・
ちなみにWordPress以外で動いているPHP系サイトもMySQL接続エラー発生。
ログを見ても特に怪しいものを発見できなかった。
ただ、phpMyAdminは動作していた。。
思うに、
Replaced: php-mysql.i686 0:5.4.13-1.el6.remi --- Package php-mysql-5.4.14-1.el6.remi.i686 is obsoleted by php-mysqlnd-5.5.0-0.25.beta3.el6.remi.i686 which is already installed.
この辺が怪しい・・・
「php-mysql」が廃止されて、「php-mysqlnd」に置き換わったとの事。
この「php-mysqlnd」を調べると、
※抜粋:PHP:下位互換性のない変更点
新しい mysqlnd ライブラリは、MySQL 4.1 用の41バイトの新しいパスワードフォーマットを使用します。 古い16バイトのパスワードを使うと、 mysql_connect() 系の関数は次のようなエラーメッセージを生成します。"mysqlnd cannot connect to MySQL 4.1+ using old authentication"
とある。
すなわち!
古いパスワードフォーマットだったからMySQLに接続できなくなった!!
というわけだ。
取り急ぎパッケージのダウングレードしたが、
迂闊なアップデートはやっぱり恐ろしいね~
※解決方法:PHPからMySQLに接続できない:mysqlnd
スポンサードリンク
PHPによるCSVファイルの読み込み
PHPでCSVファイルを読み込む
※「fgetcsv」関数の第3引数にてセパレート文字変更可
★読み込みサンプルCSV(sample.csv)
111,222,333 AAA,BBB,CCC
★PHP
★出力結果
array(2) { [0]=> array(3) { [0]=> string(3) "111" [1]=> string(3) "222" [2]=> string(3) "333" } [1]=> array(3) { [0]=> string(3) "AAA" [1]=> string(3) "BBB" [2]=> string(3) "CCC" } }
Conditions by timestamp by PHP
-
// Specifies the file path where PHP wants to check the timestamp
-
$file_path = '/var/www/html/';
-
-
if($file != '.' && $file != '..'){
-
// Get timestamp
-
-
// Specify the time range(condition)
-
}else{
-
}
-
}
-
}
-
}
PHPによる時間範囲を指定した条件
ファイルのタイムスタンプを取得して
その取得ファイルの中から指定の日時を抽出したいなど、
PHPによる時間範囲指定したいケースがあるかと思います。
※SQLならbetweenで簡単ですけどね~
-
// タイムスタンプを調べたいファイルパスを指定
-
$file_path = '/var/www/html/';
-
-
if($file != '.' && $file != '..'){
-
// タイムスタンプ取得
-
-
// 時間範囲を指定
-
}else{
-
}
-
}
-
}
-
}
★参考URL
・[本を買わずに解決するWeb制作の小技] phpで日付・時間を比較する方法
「HTTPステータスコードチェッカー」のバージョンアップ! -> β3
HTTPステータスコードをチェックできる「HTTPステータスコードチェッカー」のバジョンアップをした!
β2からβ3になった!
★主な変更点
・チェック数を100URLに制限(負荷増大のため)
・HTMLテンプレート変更
・その他バグ修正
★HTTPステータスコードチェッカー
http://st-code.itland.ezic.info/