【问题标题】:Unable to open yii2 application using xampp无法使用 xampp 打开 yii2 应用程序
【发布时间】:2019-12-10 16:38:38
【问题描述】:

我刚刚安装了xampp,将项目文件夹放在htdocs。安装作曲家。但是当我尝试打开我的网络界面时,我收到了错误

致命错误:不能使用 'Object' 作为类名,因为它在第 77 行的 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Object.php 中保留

我搜索了解决方案并找到了这个Composer Update。所以我尝试更新作曲家

F:\xampp\htdocs\inventory-web>composer update Loading composer repositories with package information Updating dependencies (including require-dev)

之后,我得到以下错误

您的需求无法解析为一组可安装的软件包。

Problem 1
    - kartik-v/yii2-date-range dev-master requires kartik-v/yii2-krajee-base >=2.0.0 -> satisfiable by kartik-v/yii2-krajee-base[dev-master, 2.0.x-dev, v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4, v2.0.5] but these conflict with your requirements or minimum-stability.
    - kartik-v/yii2-date-range dev-master requires kartik-v/yii2-krajee-base >=2.0.0 -> satisfiable by kartik-v/yii2-krajee-base[dev-master, 2.0.x-dev, v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4, v2.0.5] but these conflict with your requirements or minimum-stability.
    - Installation request for kartik-v/yii2-date-range dev-master -> satisfiable by kartik-v/yii2-date-range[dev-master].

Composer.json

{
"name": "yiisoft/yii2-app-advanced",
"description": "Yii 2 Advanced Project Template",
"keywords": ["yii2", "framework", "advanced", "project template"],
"homepage": "http://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
    "issues": "https://github.com/yiisoft/yii2/issues?state=open",
    "forum": "http://www.yiiframework.com/forum/",
    "wiki": "http://www.yiiframework.com/wiki/",
    "irc": "irc://irc.freenode.net/yii",
    "source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "stable",
"require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": "~2.0.6",
    "yiisoft/yii2-bootstrap": "~2.0.0",
    "yiisoft/yii2-swiftmailer": "~2.0.0",
    "luoxiaojun1992/yii2-tinker": "*",
    "kartik-v/yii2-grid": "@dev",
    "kartik-v/yii2-widget-select2": "@dev",
    "kartik-v/yii2-mpdf": "*",
    "moonlandsoft/yii2-phpexcel": "*",
    "nirvana-msu/yii2-showloading": "1.0.*@dev",
    "kartik-v/yii2-krajee-base": "~1.7",
    "kartik-v/yii2-widget-spinner": "@dev",
    "edwinhaq/yii2-simple-loading": "*",
    "c006/yii2-submit-spinner": "*",
    "kartik-v/yii2-detail-view": "*",
    "fedemotta/yii2-cronjob": "*",
    "kartik-v/yii2-widget-datetimepicker": "*",
    "kartik-v/yii2-date-range": "dev-master",
    "phpoffice/phpspreadsheet": "^1.2",
    "linslin/yii2-curl": "*",
    "kartik-v/yii2-widget-fileinput": "@dev",
    "kartik-v/yii2-dialog": "*",
    "google/apiclient": "^2.0",
    "delight-im/str": "^2.4",
    "mongosoft/yii2-soap-client": "*"


},
"require-dev": {
    "yiisoft/yii2-debug": "~2.0.0",
    "yiisoft/yii2-gii": "~2.0.0",
    "yiisoft/yii2-faker": "~2.0.0",

    "codeception/base": "^2.2.3",
    "codeception/verify": "~0.3.1"
},
"config": {
    "process-timeout": 1800
},
"extra": {
    "asset-installer-paths": {
        "npm-asset-library": "vendor/npm",
        "bower-asset-library": "vendor/bower"
    }
},
"scripts": {
    "post-install-cmd": "php init --env=Development --overwrite=n"
},
"autoload": {
    "psr-4": {
        "kartik\\spinner\\": "",
        "nirvana\\showloading\\": ""
    }
}
}

更新 1

在我的composer.json 文件中,我将"minimum-stability": "stable" 更新为'"minimum-stability": "dev"',然后再次尝试更新composer。现在我收到错误

您的需求无法解析为一组可安装的软件包。

Problem 1
    - mongosoft/yii2-soap-client dev-master requires ext-soap * -> the requested PHP extension soap is missing from your system.
    - mongosoft/yii2-soap-client 0.1.0 requires ext-soap * -> the requested PHP extension soap is missing from your system.
    - mongosoft/yii2-soap-client 0.1.0 requires ext-soap * -> the requested PHP extension soap is missing from your system.
    - Installation request for mongosoft/yii2-soap-client * -> satisfiable by mongosoft/yii2-soap-client[0.1.0, dev-master].

  To enable extensions, verify that they are enabled in your .ini files:
    - F:\xampp\php\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

更新 2

根据建议,我已将composer.json 中的"kartik-v/yii2-krajee-base": "~1.7" 更改为"kartik-v/yii2-krajee-base": "^2.0",然后通过cmd 运行命令composer update,没有错误,所有更新都成功完成。之后,我尝试运行该应用程序,但它仍然显示给我

致命错误:不能使用“对象”作为类名,因为它保留在 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Object.php 第 77 行

我怎样才能摆脱这个问题?

任何帮助将不胜感激

【问题讨论】:

  • 显示你的 composer.json
  • @Bizley 我已经添加了
  • 你只需要安装你的依赖的稳定版本,因为你的"minimum-stability""stable"yii2-date-range的最新稳定版本是1.7.1
  • 请阅读github.com/yiisoft/yii2/issues/14823#issuecomment-394314404 - 错误堆栈跟踪应该指向使用Object 而不是BaseObject 的类。它可能是其中一个扩展程序或您的应用程序本身的错误。
  • 删除供应商目录并将"yiisoft/yii2": "~2.0.6",更改为"yiisoft/yii2": "~2.0.14",并运行composer update它应该可以工作,你也应该用pakagist "config": { "process-timeout": 1800, "fxp-asset": { "enabled": false } }, "repositories": [ { "type": "composer", "url": "https://asset-packagist.org" }替换fxp-assets

标签: php yii2 xampp composer-php


【解决方案1】:

Yii 内部似乎存在问题。你可以阅读它here

有几种选择:

  1. 将 yii 版本升级到2.0.13 或更高版本。
  2. 将 PHP 版本降级为 7.0.23
  3. 在有问题的地方手动将Object 替换为BaseObject。(这是最简单的,但在质量更改方面最差)。

我建议做第一个。

要升级 yii 版本,你应该运行

composer self-update
composer global require "fxp/composer-asset-plugin:^1.4.1" --no-plugins
composer require "yiisoft/yii2:~2.0.13" --update-with-dependencies

如果您在自己的代码中使用Object 类或使用某些扩展的旧版本,则可能仍然存在此问题。在这种情况下,您应该在代码中手动将 Object 替换为 BaseObject 并更新扩展,或者如果新版本不可用,请手动替换它或使用其他扩展。

正如下面提到的@rob006,不再需要fxp/composer-asset-plugin,您应该改用packagist。您可以在我在 cmets 中给您的article 中阅读更多相关信息。

【讨论】:

  • 你能告诉我如何升级它吗?
  • @Faisal 请尝试新的更改。另外,您应该阅读this
  • 请不要使用=2.0.13 作为约束。 composer require "yiisoft/yii2:~2.0.13" --update-with-dependencies 应该足以将框架升级到最新版本,但是如果其中一个扩展在某处使用 Object 类,仍然会发生此错误(由于 BC 原因,该类未从框架中删除,但框架本身不使用该类)。
  • @rob006 根据 github 变更日志 -> For compatibiliy with PHP 7.2 which does not allow classes to be named Object anymore, we needed to rename yii\base\Object to yii\base\BaseObject. 2.0.13 之后没有 BC。
  • @rob006 我已经更新了答案以包含来自 cmets 的所有信息。
【解决方案2】:

你已经到了"kartik-v/yii2-date-range": "dev-master",这意味着你要求最新的开发版本的软件包,但如果你将"kartik-v/yii2-krajee-base": "~1.7"更改为"kartik-v/yii2-krajee-base": "^2.0",你仍然可以得到这个,因为现在你正在阻止它(这正是作曲家信息所说的)。 Read more about composer version constraints.

【讨论】:

  • 所以我只需要更改版本号就可以了?
  • 是的。可能会发生其他事情,但您可以随时使用版本,直到正确为止
  • 您的 PHP 中没有安装 soap 库。
  • 我在php.ini启用了soap扩展
  • 它必须在 PHP CLI 中启用,作曲家才能检测到它。
猜你喜欢
  • 2014-01-10
  • 2018-11-11
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2021-04-02
  • 2016-06-30
相关资源
最近更新 更多