实际上,我设法为我制作的插件制作了一个安装 zip,并且在安装脚本文件中,我将此代码包含在 install 函数中,以便将某些文件复制到另一个目录中 joomla 内的文件夹中。
class plgVmCustomPayeddownloadsInstallerScript {
function install($parent) {
$src = "plugins/vmcustom/payeddownloads/payeddownloads.php";
$destination = "components/com_virtuemart/controllers";
if(!JFile::move($src, $destination,JPATH_ROOT)){
echo "tried to move from ".$src." to ".$destination;
return false;
}
}
安装后,我在 joomla 中不断收到错误,“无法重命名文件”,并且应该由安装功能命令移动的文件没有,尽管事实上 install.xml 中的文件确实被复制了并正确安装。
同样在安装脚本中在安装功能中,我包含了一些正常执行的sql,没有任何问题。
而且我还尝试了 postflight 功能,但没有成功。我也没有从 php_error.log 中得到任何特定的错误
我还尝试在我的 joomla 安装的根应用程序中使用上面的 tester.php 文件创建这个奇怪的测试。
<?php
/**
* @package Joomla.Site
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// Set flag that this is a parent file.
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;
// Instantiate the application.
$app = JFactory::getApplication('site');
// Initialise the application.
$app->initialise();
// Mark afterIntialise in the profiler.
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
// Route the application.
$app->route();
// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
// Dispatch the application.
$app->dispatch();
// Mark afterDispatch in the profiler.
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
// Render the application.
$app->render();
// Mark afterRender in the profiler.
JDEBUG ? $_PROFILER->mark('afterRender') : null;
//plugins/vmcustom/payeddownloads/payeddownloads.php to
//components/com_virtuemart/controllers
jimport('joomla.filesystem.file');
$src = JPATH_ROOT."/plugins/vmcustom/payeddownloads/payeddownloads.php";
$destination = JPATH_ROOT."/components/com_virtuemart/controllers/";
echo $src."<br>";
echo $destination."<br>";
JFile::move($src,$destination);
?>
该文件不会从 payeddownloads 移动到控制器文件夹,也不会导致任何错误。
另外我需要提到 php.ini 有 error_reporting = E_ALL 和 display_errors = On。php_error.log 也捕获错误。如果我输入例如 echo "lala"oo 它将记录错误并显示它。所以我怀疑 JFile::move 有一个错误,即使文件没有被复制,它也不会抛出任何错误。请问有什么建议吗?