我在机器上开发了一个小项目,使用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
访问方法。我需要它运行,但我无法弄清楚如何让它运行。
非常感谢任何帮助。
答案 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.
因此,它不会在常规的免费网络托管服务上运行。