我需要在X-Cart 4.4.4中安装一个模块(https://help.x-cart.com/index.php?title=x-cart:x-pdf_invoices)。
x-cart位于根目录中,但已安装的模块位于root/modules
中。安装说明建议将所有模块目录解开并将所有模块目录转移到根目录中进行安装。
这是我做不到的 - 模块的内容包括文件和文件夹,其名称与根目录中的名称相同。
相反,我将内容包装到root/modules/
的子目录中。在安装脚本中,我将cwd
更改为root whch修复未找到错误的文件,但是当该文件到达X-Cart install.php
时,它会破裂并遇到错误(在Nginx日志中没有显示错误)。
例如:
//change cwd to root
chdir(str_replace('modules/X_PDF', '', __DIR__));
if (!@include('./top.inc.php')) {
die('X-Cart not found in '.dirname(__FILE__));
}
if (!@include('./init.php')) {
die('init.php not found. Please, unpack ' . $module_definition['name'] . ' module in <xcart> directory');
}
在这里我们需要X-Cart安装脚本。文件路径是正确的,脚本被调用。
require_once $xcart_dir . '/include/install.php';
此补丁在4.7.6版本中对我有用。
您必须调整模块的皮肤文件和模块/xpdf/*。php文件适用于您的自定义dir。
Index: include/install.php
--- include/install.php
+++ include/install.php
@@ -500,7 +500,7 @@ function func_init_xcart() {
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $install_language_charset; ?>" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title><?php echo_lng('install_wiz', 'product', $installation_product); ?></title>
-<link rel="stylesheet" type="text/css" href="skin/common_files/css/install.css" />
+<link rel="stylesheet" type="text/css" href="../../skin/common_files/css/install.css" />
<style type="text/css">
<?php
@@ -1064,6 +1064,7 @@ function query_upload($filename)
global $xcart_dir, $sql_obj;
$fp = @fopen($xcart_dir.XC_DS.$filename, 'rb');
+ $fp = $fp ?: @fopen($filename, 'rb');
if ($fp === false) {
echo_lng('upload_cannot_open', 'file', $filename, 'status', status(false));
return 0;
Index: install-xpdf.php
--- install-xpdf.php
+++ install-xpdf.php
@@ -55,6 +55,13 @@ $module_definition = array (
'is_installed' => 'func_is_installed',
);
+
+$module_definition['sql_files'] = array(
+ getcwd() . '/sql/'.$module_definition['prefix'].'_remove.sql',
+ getcwd() . '/sql/'.$module_definition['prefix'].'.sql',
+ getcwd() . '/sql/'.$module_definition['prefix'].'_lng_US.sql',
+);
+
if (
isset($_POST['params'])
&& isset($_POST['params']['install_type'])
@@ -65,6 +72,8 @@ if (
);
}
+chdir(str_replace('root/modules', '/', __DIR__));
+
if (!@include('./top.inc.php')) {
die('X-Cart not found in '.dirname(__FILE__));
}
@@ -73,7 +82,7 @@ if (!file_exists('skin')) {
die('Wrong X-Cart version');
}
-if (!@include(dirname(__FILE__).'/init.php')) {
+if (!@include(getcwd().'/init.php')) {
die('init.php not found. Please, unpack ' . $module_definition['name'] . ' module in <xcart> directory');
}
顺便说一句,您可以手动安装模块只是
1)使用这些文件修补X-Cart
./include/history_order.php.patch
./include/func/func.mail.php.patch
./include/process_order.php.patch
./process_order.php.patch
2)应用这些SQL文件
sql/x-pdf_lng_US.sql
sql/x-pdf.sql
http://help.x-cart.com/index.php?title=x-cart:applying_patches