PHP 命名空间未在同一目录中的同一命名空间中找到类 - 在开发中工作,而不是在生产中

标签 php heroku namespaces yii2

我有以下 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 Fatal error: Class 'app\models\Ebay' not found in /app/models/Product.php on line 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

好吧,我什至把 useindex.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

最佳答案

好的,我找到了。这是因为文件名为 EBay.php在 Git 和 Heroku 中,但 Ebay.php在 Windows 文件系统上。诅咒你 Git!这解决了它。

git mv -f models/EBay.php models/Ebay.php

这个命令失败了,所以我不得不进一步调查:
heroku run ls models/Ebay.php

关于PHP 命名空间未在同一目录中的同一命名空间中找到类 - 在开发中工作,而不是在生产中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29246487/

相关文章:

javascript - PHP/Ajax 登录到网络路由器

heroku - Rails 4 链接到更大的静态图像

php - 使用 PHP 检查 URL 是否被 Google 索引

php - 你调用的对象是空的。 PHP

php - 在在线主机中将 NGINX 重写为 Laravel 5

heroku - 如何使用 awk 或 sed 解析/过滤日志行

node.js - Heroku 自定义域不起作用

typescript - 如何创建嵌套的 d.ts 文件?

ruby-on-rails-4 - Rails 模型命名空间依赖销毁导致 mysql 错误未知字段

php - 使用 phpmailer 在路由中调用函数