こんにちは、コブラです。
先日、クライアントのPHPをバージョンアップしました。
PHP5.2系はとっくにサポートが切れてますからね・・・ええ・・・。
で、ハマった点。
PHP Extensionsの削除漏れがあり、
MySQLで「session拡張ができません。PHPの設定を確認してください。」のエラー。
PHP5.2でインストールしてたSESSIONやらMBSTRINGやらを削除し忘れ、
そこにPHP5.3をライブラリを入れないままphpMyAdminを起動したものだからこの騒ぎですよ・・・。
PHPで使えてる関数は拡張ライブラリあってこそというわけですね・・・。
で、必要そうなライブラリをごそっとインストールして解決しました。
ちなみに、移行に関する情報は「PHP 5.2.x から PHP 5.3.x への移行」で確認しました!
PHP, 社員:cobra
こんにちは、コブラです。
先日書いた「500エラー 予期しない状況が発生しました。の対処法。」という記事ですが、
これで解決しませんでした・・・。
オーバーヘッドが0.0KBでも発生する・・・何故だ・・・。
と思っていたら、とんでもないところに原因がありました!
それがこれ!
ループの中で同じファイルを何度もincludeしていたから!
以前、includeとrequire_onceの違いなどは書きましたが、
includeするクラスの中にファンクションなどがあると、
何度も定義しようとしてエラーになるのだとか。
でもincludeなので、処理は止まらないと。
なるほど・・・つまり、こういうことです!
for ($i = 0; $i < 100; $i++) {
include "hoge.inc"; // getHogehoge()を何度も定義しようとするから×。ループの外に出す
getHogehoge();
}
-hoge.inc
function getHogehoge() {
return true;
}
原因が分かってスッキリしました!
初歩的なことですが見落としがちかも、皆さんもご注意を!
MySQL, PHP, 社員:cobra
こんにちは、コブラです。
今日はタイトルの通り、php.iniの設定を.htaccessで変更する方法です。
php.iniを独自に編集できない場合、設定を変えたいときに困りますよね。
php.ini ディレクティブのリスト – PHPマニュアル
PHPマニュアルにある通り、
変更できるPHPの設定は「PHP_INI_PERDIR」または「PHP_INI_ALL」です!
レンタルサーバによるのかも知れませんが、
どうやらサーバは最初にこちらで用意したphp.iniを読み、
次にサーバ側のphp.iniを読むらしい?
つまりこちらで設定した項目が優先されるというわけですね。
では、その手順を。
1.php.iniファイルを用意します。
中身はたとえばこんな感じです!
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
mbstring.http_input = UTF-8
mbstring.detect_order = auto
mbstring.http_input = auto
これをサーバにアップロードします。
2.次に.htaccessを用意し、以下を追記します!
suPHP_ConfigPath /usr/home/hoge/hogehoge/
これは、php.iniを置いた階層を記述します。
これだけです!
試しにphpinfo()で見てみると、確かにUTF-8になってます!
php.iniが変更できないサーバだけど、どうしても変えたい!
そんなときに活用してみてください。
HTML, PHP, 社員:cobra
最近のコメント