CakePHP 3.0没有在其他机器上运行

时间:2014-12-15 21:47:34

标签: php cakephp namespaces cakephp-3.0

我在机器上开发了一个小项目,使用CakePHP 3.0,我需要它在另一台机器上运行。我试过在其他几台机器上安装它。

如果我运行composer来安装CakePHP 3.0,那么我会复制我的东西来覆盖它,项目有效。我已经在两台机器上尝试了这个,到目前为止没问题。如果我不运行composer,只是将内容复制到目标机器,它会给我以下错误。我在3台机器上试过这个,每台机器都给我这个:

Fatal error: Class 'Locale' not found in /home/u113681897/public_html/vendor/cakephp/cakephp/src/I18n/I18n.php on line 229

Fatal error: Class 'Locale' not found in /home/u113681897/public_html/vendor/cakephp/cakephp/src/I18n/I18n.php on line 229

我已将整个项目复制到this server进行测试。

我告诉过你,因为我认为这与我的问题有关。关键是我必须在不属于我的机器上运行它,我无法在其上安装composer。 /public_html/vendor/cakephp/cakephp/src/I18n/包含与国际化和本地化相关的文件,但我的项目永远不会被翻译,因此使项目忽略这些文件的解决方法足以解决我的问题。

以下代码摘自(...)/I18n/I18n.php可能相关的内容:

<?php
namespace Cake\I18n;

use Aura\Intl\FormatterLocator;
use Aura\Intl\PackageLocator;
use Aura\Intl\TranslatorFactory;
use Cake\I18n\Formatter\IcuFormatter;
use Cake\I18n\Formatter\SprintfFormatter;
use Locale;

class I18n {

    // lots of code here

    public static function defaultLocale() {
        if (static::$_defaultLocale === null) {
            static::$_defaultLocale = Locale::getDefault() ?: 'en_US';
            // the line above is the Line 229
        }
        return static::$_defaultLocale;
    }

    // many code here too
}

我已检查过另一个文件是否也尝试访问此Locale类,但我不知道是否还有其他文件试图访问它。项目内各处的许多文件都试图从I18n.php访问方法。我需要它运行,但我无法弄清楚如何让它运行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

正如我刚刚发现的那样,在CakePHP 3.0之前,安装必须由composer完成,如3.0 migration guide中所述:

CakePHP should be installed with Composer

Since CakePHP can no longer easily be installed via PEAR, or in a shared
directory, those options are no longer supported. Instead you should use
Composer to install CakePHP into your application.

因此,它不会在常规的免费网络托管服务上运行。