【发布时间】:2015-05-28 13:58:12
【问题描述】:
我有以下 PHP 文件。它在开发中工作。它们具有相同的命名空间和相同的 PHP 版本。当我部署到 Heroku 时,它给出了一个错误。你知道为什么吗?
Product.php
namespace app\models;
class Product extends \yii\db\ActiveRecord
public function getEbay() {
return $this->hasOne(Ebay::className(), ['product_id' => 'id'])->inverseOf('product'); # line 56
Ebay.php
namespace app\models;
class Ebay extends \yii\db\ActiveRecord
2015-03-25T02:00:01.003508+00:00 app[web.1]: [25-Mar-2015 02:00:01 UTC] PHP 致命错误:找不到类“app\models\Ebay”在 /app/models/Product.php 第 56 行
>heroku run php --version
Running `php --version` attached to terminal... up, run.5360
PHP 5.6.6 (cli) (built: Feb 19 2015 10:11:22)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
本地:
$ php --version
PHP 5.6.6 (cli) (built: Feb 25 2015 13:54:50)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
好的,我什至将use 放入了index.php,但它仍然失败。
C:\Users\Chloe\workspace\project>heroku run cat web/index.php
Running `cat web/index.php` attached to terminal... up, run.3679
<?php
// comment out the following two lines when deployed to production
if ($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
}
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
use app\models; Ebay::className();
(new yii\web\Application($config))->run();
C:\Users\Chloe\workspace\project>heroku logs
...
2015-03-26T17:10:13.590855+00:00 app[web.1]: [26-Mar-2015 17:10:13 UTC] PHP Fatal error: Class 'Ebay' not found in /app/web/index.php on line 14
【问题讨论】:
-
这可能不是你的问题,但你没有在你的产品类声明之前添加 use app\models\Ebay,我想知道你是否只是不在这里输入代码。跨度>
-
还有……你的自动加载机在哪里?
-
@JoeMiller 不,这不是我的问题。它在开发中工作。但是即使在您发表评论之前,我也尝试在
namespace声明之后添加use \app\models; use \app\models\Ebay;和use app\models; use app\models\Ebay;,但仍然无效。 -
@dzuelke 这是一个 Yii2 应用。自动加载器位于 Yii2 应用程序的标准位置。我不知道。我想它在
vendor/autoload.php。
标签: php heroku namespaces yii2