当前位置: 首页 > 面试题库 >

我的Magento扩展安装脚本无法运行

景景胜
2023-03-14
问题内容

我正在尝试为我的扩展程序创建安装脚本,由于某种原因,它不会安装脚本。该扩展名将显示在core_resource表中,但是我要创建的属性不会创建。

我非常确定该脚本甚至没有被调用,因为我在开头放置了exit()并且该站点运行得很好。

这是我的配置XML文件中的内容。这放置在全局->资源路径中:

<nie_setup>
    <setup>
        <module>Nie_Nie</module>
    </setup>
    <connection>
        <use>core_setup</use>
    </connection>
</nie_setup>

我的安装脚本如下:

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();

$setup->addAttribute('customer', 'nie_admin', array(
    'input'                 => 'text',
    'type'                  => 'text',
    'backend'               => '',
    'visible'               => 0,
    'required'          => 0,
    'user_defined'  => 1,
));

$installer->endSetup();

有什么明显的我想念的地方是脚本无法运行的原因吗?


问题答案:

在本文中逐步进行操作,以确保您对设置资源的功能,它们如何工作以及如何对它们进行故障排除没有任何误解。

完成此操作后,从您在此问题线程上说的所有内容看来,您似乎正在“安装”资源,但是安装脚本永远不会运行。我的猜测是您使用的版本号

//0.0.1 is your version number
mysql4-install-0.0.1.php

与您的模块版本不匹配

<modules>
    <Nie_Nie>
        <version>?.?.?</version>
    </Nie_Nie>
</modules>

那些应该匹配才能运行脚本。我 认为 Magento可以找到以前的版本,足够聪明地运行它们,但是设置资源中的代码很难遵循,因此我始终确保它们匹配。

无论如何,这是当您运行设置资源时如何查看magento尝试运行的文件的方式。删除core_resource与模块相关的所有条目。清除缓存。然后在安装程序类中找到以下位置

app / code / core / Mage / Core / Model / Resource / Setup.php

protected function _modifyResourceDb($actionType, $fromVersion, $toVersion)
{
    ...

    $sqlFilesDir = Mage::getModuleDir('sql', $modName).DS.$this->_resourceName;

    if (!is_dir($sqlFilesDir) || !is_readable($sqlFilesDir)) {
        return false;
    }

    ...

    $sqlDir->close();

    if (empty($arrAvailableFiles)) {
        return false;
    }

    ...

    $arrModifyFiles = $this->_getModifySqlFiles($actionType, $fromVersion, $toVersion, $arrAvailableFiles);
    if (empty($arrModifyFiles)) {
        return false;
    }

然后修改它们以添加一些临时调试异常

    if (!is_dir($sqlFilesDir) || !is_readable($sqlFilesDir)) {
        throw new Exception("$sqlFilesDir not found");
        return false;
    }

    ...

    if (empty($arrAvailableFiles)) {
        throw new Exception("No files found to run");
        return false;
    }

    ...

    $arrModifyFiles = $this->_getModifySqlFiles($actionType, $fromVersion, $toVersion, $arrAvailableFiles);
    if (empty($arrModifyFiles)) {
        throw new Exception("No valid upgrade files found to run for ");
        return false;
    }

    throw new Exception("If you're getting here, we have a file.  Remove your exceptions here and place one in your installer to make sure it's the one you think it is.");

重新加载页面,您会收到异常文本,抱怨Magento找不到任何内容。这应该足以帮助您跟踪Magento尝试运行的安装程序脚本,但是找不到。只要记住要删除模块中的行core_resource并清除缓存即可。(Magento缓存需要检查安装/升级的模块)

如果那不起作用,请开始研究的逻辑applyAllDataUpdates并弄清楚为什么该类不包括您的安装程序文件。



 类似资料:
  • 本文向大家介绍shell 脚本安装PHP扩展的简单方法,包括了shell 脚本安装PHP扩展的简单方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇shell 脚本安装PHP扩展的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我似乎在绕圈子,试图用phpbrew安装一个PHP版本。当尝试安装任何版本的php时,它会返回一个致命错误: 找不到openssl扩展名,要下载版本文件,您需要openssl。 但是当我尝试通过phpbrew安装openssl时,它也会抛出一个错误: 错误:未定义PHPBREW_PHP环境变量。此扩展命令要求您从生成列表中指定PHP版本。 任何帮助都将不胜感激。 phpbrew--debug安装p

  • 如果我尝试安装一个新的扩展,从PHPStorm或命令行,我得到这个错误: 注意:我在我的php上禁用了xdebug扩展,但警告仍然显示在应用程序中。 C:\wamp\bin\php\php5.5.12\php.exe C:\wamp\www\calificaciones\composer.phar require 2amigos/yii2日期选择器小部件:1.0.5-n--在启用xdebug的情况

  • 个人扩展文件夹 VS Code 会在个人扩展文件夹中.vscode/extensions来寻找扩展组件。不同的平台其文件夹所在的位置也不同: Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions Linux ~/.vscode/extensions 如果你想在VS Code 每次启动都能够加载你自己的扩展或者定制化信息,

  • 问题内容: 我正在尝试将MySQL安装到最新版本,这是因为某些安装错误。我运行命令,并且收到以下信息: 构建本机扩展。这可能需要一段时间…错误:安装mysql时出错:错误:无法生成gem本机扩展。 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb extconf.rb:4:警告:PATH模式

  • PHP 7.3.5你好,我有一个问题的扩展超文本传输协议,和作曲家说我的超文本传输协议是丢失的,即使我写这在作曲家. json,为什么?这个确切的消息:_Problem1-请求的PHP扩展超文本传输协议*在您的系统中丢失。安装或启用PHP的超文本传输协议扩展。我试图看到php.ini,但我没有看到任何相关的东西 删除整个供应商directroy的工作可能是因为它的php版本后。。。