您的要求无法解析为可安装的软件包集

时间:2014-07-07 12:20:39

标签: php composer-php zeromq php-extension

很抱歉与另一个问题重复此问题。我无法解决我的问题。

我正在开发一个基于Ratchet的项目。我正在尝试运行Push Integration示例。所以,为了运行,我应该使用composer来获得一些依赖。我创建了一个composer.json文件,如下所示:

{
    "autoload": {
        "psr-0": {
            "MyApp": "src"
        }
    },
    "require": {
        "cboden/ratchet": "0.3.*",
        "react/zmq": "0.2.*|0.3.*"
    }
}

当我在其上执行composer时,发生以下错误:

Loading composer repositories with package information
Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - react/zmq v0.3.0 requires ext-zmq * -> the requested PHP extension zmq is missing from your system.
    - react/zmq v0.2.0 requires ext-zmq * -> the requested PHP extension zmq is missing from your system.
    - Installation request for react/zmq 0.2.*|0.3.* -> satisfiable by react/zmq[v0.2.0, v0.3.0].

您可以在下面找到RatchetZMQ的composer.json:

ZMQ:

{
    "name": "react/zmq",
    "description": "ZeroMQ bindings for React.",
    "keywords": ["zmq", "zeromq"],
    "license": "MIT",
    "require": {
        "php": ">=5.4.0",
        "ext-zmq": "*",
        "evenement/evenement": "~2.0",
        "react/event-loop": "0.4.*"
    },
    "require-dev": {
        "ext-pcntl": "*"
    },
    "autoload": {
        "psr-0": { "React\\ZMQ": "src" }
    },
    "extra": {
        "branch-alias": {
            "dev-master": "0.4-dev"
        }
    }
}

棘轮:

{
    "name": "cboden/ratchet"
  , "type": "library"
  , "description": "PHP WebSocket library"
  , "keywords": ["WebSockets", "Server", "Ratchet", "Sockets"]
  , "homepage": "http://socketo.me"
  , "license": "MIT"
  , "authors": [
        {
            "name": "Chris Boden"
          , "email": "cboden@gmail.com"
          , "role": "Developer"
        }
    ]
  , "support": {
        "forum": "https://groups.google.com/forum/#!forum/ratchet-php"
      , "issues": "https://github.com/ratchetphp/Ratchet/issues"
      , "irc": "irc://irc.freenode.org/reactphp"
    }
  , "autoload": {
        "psr-0": {
            "Ratchet": "src"
        }
    }
  , "require": {
        "php": ">=5.3.9"
      , "react/socket": "0.3.*|0.4.*"
      , "guzzle/http": "~3.6"
      , "symfony/http-foundation": "~2.2"
      , "symfony/routing": "~2.2"
    }
}

有什么问题?请给我一个解决方案。 在此先感谢:)

3 个答案:

答案 0 :(得分:18)

好的,我们走了......

您必须先在操作系统中安装ZMQ和ZMQ绑定。 以下示例基于Debian Linux,但它应该适用于其他操作系统。

第一: 安装0MQ: 转到http://zeromq.org/area:download并根据您的操作系统选择一个包,在我选择的情况下 POSIX tarball稳定版本4.0.4。

~$ tar -xvf zeromq-4.0.4.tar
~$ cd zeromq-4.0.4
~$ ./configure
~$ make
~$ sudo make install

好的,我们刚安装ZMQ现在需要安装zmq php绑定... 确保安装了php-dev和php pear。如果不是:

~$ sudo apt-get install php5-dev php-pear
~$ sudo pecl install zmq-beta

好的,我们现在安装了ZMQ和php绑定(ext-php)但我们应该添加" extension = zmq.so" (或windows上的扩展名= php_zmq.dll)到php.ini: 就我而言:

~$ sudo nano /etc/php5/apache2/php.ini

注意:如果PHP版本是5.4.x(或5.4+,但我还没有测试过......),则需要在/ etc中添加zmq.ini文件/php5/conf.d并输入" extension = zmq.so":

~$ sudo nano /etc/php5/conf.d/20-zmq.ini

Reloadind HTTP服务器(在我的例子中是apache):

~$  sudo service apache2 reload

WOW !!!现在我们要更新作曲家的要求:

~$ composer --verbose update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing react/zmq (v0.3.0)
    Downloading: 100%         
    Extracting archive

Writing lock file
Generating autoload files

答案 1 :(得分:12)

如果您在遵循上述答案后仍然遇到相同的错误,则可能是因为php.ini通常使用的composer不正确。 您还必须更新CLI PHP的ini。

如果从终端内部运行命令php --ini,那么您应该看到以下内容:

enter image description here

.ini意味着与/etc/php5/apache2/php.ini不同的用法。因此,如果您认为已经按照正确的工作流程安装了扩展程序,请更新/etc/php5/cli/php.ini并在其中添加extension=zmq.so

希望您在使用作曲家安装时摆脱the requested PHP extension zmq is missing错误。

答案 2 :(得分:0)

如果您在Windows上使用Xampp,请按照以下步骤操作

  1. http://pecl.php.net/package/zmq处将所有dll下载到您匹配的操作系统。 确保您选择了正确的服务器(x86或x64),并且它是线程安全的或非线程安全的。你怎么知道的?是时候玩DLL轮盘了。
  2. libzmq.dll复制到您的xampp/php/
  3. php_zmq.dll复制到您的php扩展目录(例如xampp/php/ext/
  4. 然后将其添加到您的php.ini extension=php_zmq.dll