将OSCommerce移动到本地服务器

时间:2015-06-17 09:20:33

标签: php .htaccess oscommerce

我正在尝试在我的本地计算机上设置旧的OSCommerce网站。我跟着these instructions,但是当我尝试在本地打开网站时,我遇到了一些错误。

我正在使用osCommerce 2.2-MS2。我的本地PHP版本是5.5.9,安装OSC的远程服务器是PHP版本5.3.2。

当我转到 http://dev.osc.local/ 时,我收到以下错误。 (!)解析错误:语法错误,第690行/var/www/osc/index.php中意外的文件结尾 第690行是index.php的最后一行,是:

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

当我去 http://dev.osc.local/admin 时,我明白了 致命错误:在php.ini中禁用了register_globals,请启用它!

我已经尝试将.htaccess文件添加到根文件夹和admin文件夹但是它没有用。 的的.htaccess

# $Id: .htaccess 1739 2007-12-20 00:52:16Z hpdl $
#
# This is used with Apache WebServers
#
# For this to work, you must include the parameter 'Options' to
# the AllowOverride configuration
#
# Example:
#
# <Directory "/usr/local/apache/htdocs">
# AllowOverride Options
# </Directory>
#
# 'All' with also work. (This configuration is in the
# apache/conf/httpd.conf file)

# The following makes adjustments to the SSL protocol for Internet
# Explorer browsers

#<IfModule mod_setenvif.c>
# <IfDefine SSL>
#   SetEnvIf User-Agent ".*MSIE.*" \
#   nokeepalive ssl-unclean-shutdown \
#   downgrade-1.0 force-response-1.0
# </IfDefine>
#</IfModule>

# If Search Engine Friendly URLs do not work, try enabling the
# following Apache configuration parameter

# AcceptPathInfo On

# Fix certain PHP values
# (commented out by default to prevent errors occuring on certain
# servers)

# php_value session.use_trans_sid 0
php_value register_globals 1

更新

根据edmondscommerce的回答,我使用正则表达式<?搜索了<\?[\s],发现超过2000次。

我还更新了 application_top.php 文件以包含:

if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) {
  extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
}

我不确定将此代码段放在文件中的位置,我不确定它是否与下面的部分冲突。

// check if sessions are supported, otherwise use the php3 compatible session class
  if (!function_exists('session_start')) {
    define('PHP_SESSION_NAME', 'osCsid');
    define('PHP_SESSION_PATH', $cookie_path);
    define('PHP_SESSION_DOMAIN', $cookie_domain);
    define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY);

    include(DIR_WS_CLASSES . 'sessions.php');
  }

1 个答案:

答案 0 :(得分:1)

如果你看一下最新的osCommerce副本,你会在application_top.php中看到这一行,它可以完成osC所需的工作,而不需要注册全局变量:

extract($_SESSION, EXTR_OVERWRITE + EXTR_REFS);

这会将会话变量提取到实际的$变量中,然后可以在别处使用。

然后您需要注释掉或删除实际检查是否启用了注册全局变量以排除错误的行。

如果您将其粘贴到您的应用程序顶部,那么它应该可以工作,或至少解决您的大多数问题。

您的其他错误很可能与禁用的PHP短打开标记有关。这里你最好的选择是追捕并删除<?样式的PHP标记并替换为正确的<?php标记