Archive

Archive for 6 月, 2009

ZenCart PHP4⇒PHP5 移行に伴うトラブル

6 月 3rd, 2009

5月中旬、突然管理画面にログインできなくなり、急遽以下の応急処置をしました。

ZenCart adminにログイン不能

その後、
1 新規ユーザー登録後、商品確定画面につながらない
2 購入商品がカートに入らない。
事に気づき、原因を調べるとサーバがPHP5に移行したの原因でした。

ZenCart 掲示板の記事を参照しましたが、うまくいかない。
php4.4.7 → php5.2.5 への切替
結論はZenCart日本語版のzen-cart-1.3.0.2-l10nはPHP5の対応が出来てない。
PHP4は2009年7月でサポート終了だそうです。
買い物できないのでは致命傷です!
最新版3.8のファイルをコピー、アップロードして、とりあえず解決しました。
しばらくこの状態で使ってみます。
★参考↓↓↓
includes/functions/sessions.php 
*55行目
function _sess_write($key, $val) {
  // The following is only to work around a PHP 5.2.0 bug:
  global $db;
  if (!is_object($db)) {
    //PHP 5.2.0 bug workaround …
    $db = new queryFactory();
    $db->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE, USE_PCONNECT, false);
  }

  global $SESS_LIFE;

  $expiry = time() + $SESS_LIFE;
  $value = $val;

*103行目

  function zen_session_start() {
    @ini_set(’session.gc_probability’, 1);
    @ini_set(’session.gc_divisor’, 2);
    if (defined(’DIR_WS_ADMIN’)) {
      @ini_set(’session.gc_maxlifetime’, (SESSION_TIMEOUT_ADMIN < 900 ? (SESSION_TIMEOUT_ADMIN + 900) : SESSION_TIMEOUT_ADMIN));
    }
    $temp = session_start();
    if (!isset($_SESSION['securityToken'])) {
      $_SESSION['securityToken'] = md5(uniqid(rand(), true));
    }
   if (ereg_replace(’[a-zA-Z0-9]‘, ”, session_id()) != ”) session_regenerate_id();
    return $temp;
  }

  function zen_session_register($variable) {
    die(’This function has been deprecated. Please use Register Globals Off compatible code’);
  }

admin ZEN Cart