PHP日光浴 - Composer Autoload给出类未找到的错误

时间:2014-06-09 18:22:39

标签: php composer-php solarium

我正在尝试使用rpm安装的PHP(5.3.3)和Apache HTTPD在Centos 6.5上运行Solarium。

我已按照网站上的说明创建了一个文件夹/ var / www / php(位于php.ini中的include路径中)并下载了composer。然后我在composer.json中输入以下内容:

{
      "require": {
          "solarium/solarium": "3.*"
      }
}

并运行“php composer.phar install”。

我现在正在尝试运行Solarium示例文件夹中的示例(特别是1.1 Solr Ping示例)。为此,我修改了init.php以包含以下行:

要求( '销售商/ autoload.php');

我已经确认通过向其添加print语句来运行vendor / autoload.php。

但是,当我运行示例时,我得到:

Fatal error: Class 'Solarium_Version' not found in /var/www/html/test/1.1-check-solarium-and-ping.php on line 7

或如果我评论第7行:

Fatal error: Class 'Solarium_Client' not found in /var/www/html/test/1.1-check-solarium-and-ping.php on line 10

所以似乎Solarium文件没有按预期加载。

不确定这是日光浴还是作曲家问题(我怀疑是后者)。任何人都可以建议一种调试方法吗?

发出命令“php composer.phar dump-autoload”只生成消息:

Generating autoload files

这是否正确(我假设不是基于命令的描述)?

运行:

php composer.phar diagnose

给出:     检查composer.json:失败     name:缺失,是必需的     描述:缺失并且是必需的     未指定许可证,建议这样做。对于闭源软件,您可以使用“专有”作为许可。     检查平台设置:FAIL

Your PHP (5.3.3) is quite old, upgrading to PHP 5.3.4 or higher is recommended.
Composer works with 5.3.2+ for most people, but there might be edge case issues.
Checking git settings: OK
Checking http connectivity: OK
Checking disk free space: OK
Checking composer version: FAIL
Your are not running the latest version

这些都不是致命的。这是对的吗?

非常感谢

更新:

更多信息。向vendor / composer / autoload_real.php添加一些打印语句给出:

(由autoload_namespaces.php创建的$ map)

Symfony\Component\EventDispatcher\ - 
Array ( [0] => /var/www/php/vendor/symfony/event-dispatcher ) 
Solarium\ - 
Array ( [0] => /var/www/php/vendor/solarium/solarium/library ) 

(由autoload_classmap.php创建的$ classMap)

classMap - 
Array ( )

classmap的空数组似乎很奇怪。这是对的吗?

由于

P

1 个答案:

答案 0 :(得分:1)

问题是我使用了版本2.4.0(日光浴)的Examples文件夹,但是这些类来自版本3.

两个版本之间的类名已经改变

我最初从安装说明中复制了composer.json的日光浴条目,版本是2.4.0。然后我运行了作曲家安装并将示例复制到网站中,然后决定更新到日光浴室版本3。但是,我没有更新网站上的示例文件夹。

将示例文件夹更新到版本3修复了问题。

P