如何让 osCommerce 2.2 在 PHP 5.4 上运行?

rub*_*o77 6 oscommerce php-5.4

我最近将 PHP 升级到 5.4,在添加了一些调整之后,现在有很多自定义的客户的旧 osCommerce 安装再次运行,但仍然存在问题:

如果您将商品放入购物车,购物车将保持为空

我怎样才能解决这个问题?
我可以在 php.ini 中设置某个 php 值,以便会话正常工作吗?


到目前为止我所做的调整:

问题:所有价格都是0,没有货币
解决办法:!isset($currency) ||在`//段中加入
(见PHP 5.4下application_top中没有设置$currency

问题:从 PHP 5.4.0 开始删除 register_globals
解决方案:register_globals用这个模拟:https : //serverfault.com/a/547285/128892

我将此添加到includes/application_top.php

// Bugfix PHP 5.4:
$HTTP_USER_AGENT=$_SERVER["HTTP_USER_AGENT"];
$HTTP_ACCEPT_LANGUAGE=$_SERVER["HTTP_ACCEPT_LANGUAGE"];
$HTTP_HOST=$_SERVER["HTTP_HOST"];
$SERVER_NAME=$_SERVER["SERVER_NAME"];
$PHP_SELF=$_SERVER['PHP_SELF'];
$HTTP_GET_VARS=$_GET;
$HTTP_POST_VARS=$_POST;
register_globals();
Run Code Online (Sandbox Code Playgroud)

注释掉这一行:

#ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');
Run Code Online (Sandbox Code Playgroud)

我还必须更正一些已删除的功能includes/functions/sessions.phpsession_unregister()session_is_registered()


剩下的问题:填充到购物车中的物品没有添加到购物车中。似乎在 add_cart 页面中不知道会话。

rub*_*o77 0

我无法解决最后一个问题,因此在尝试了不同的尝试后,我决定付出努力,将商店及其所有自定义转换为 oscommerce 2.3,它仍然在 PHP 5.4(最高可达 PHP 5.6)上运行。

请注意,稍后,要让 oscommerce 在 php7 上运行,您将需要对 mysql 函数进行另一个修复,以解决诸如未定义函数 mysql_connect()之类的问题