环境依赖

  • 仅支持 Linux,FreeBSD,MacOS,3类操作系统
  • Linux 内核版本 2.3.32 以上
  • PHP-5.3.10 以上版本,包括PHP7
  • gcc4.4 以上版本或者clang
  • cmake2.4+,编译为 libswoole.so 作为 C/C++ 库时需要使用 cmake

建议使用 Ubuntu14CentOS7 或更高版本的操作系统

PHP版本依赖

  • 仅支持 PHP-5.3.10 或更高版本
  • 不依赖 PHPstreamsocketspcntlposixsysvmsg 等扩展。PHP 只需安装最基本的扩展即可

推荐使用的Linux发行版

  • CentOS6.2+
  • Ubuntu12+
  • Debian6+

ARM平台(树莓派Raspberry PI)

  • 请使用 swoole-1.7.10 或更高版本
  • 使用 GCC 交叉编译
  • 在编译 Swoole 时,需要手工修改 Makefile 去掉 -O2 编译参数

MIPS平台(OpenWrt路由器)

  • 请使用 swoole-1.7.21 或更高版本
  • 使用 GCC 交叉编译

CygWin环境支持(Windows系统)

swoole-1.7.7 增加了对 cygwin 环境的支持,在 Windows 环境下,可以直接使用 cygwin + php 来跑 swoole 程序。

  • 安装 cygwin,并安装 gcc、make、autoconf、php 4个包
  • 下载swoole源码,在 cygwin-shell 中进行 phpize/configure/make/make install
  • 修改 php.ini,加入 swoole.so

cygwin 模式下需要对 PHP 进行简化,去掉不使用的扩展,避免进程占用内存过大,导致 Fork 操作失败

BashOnWindows

Windows 10 系统增加了 Linux 子系统支持,BashOnWindows 环境下也可以使用 swoole。安装命令

apt-get install php7.0 php7.0-curl php7.0-gd php7.0-gmp php7.0-json php7.0-mysql php7.0-opcache php7.0-readline php7.0-sqlite3 php7.0-tidy php7.0-xml  php7.0-bcmath php7.0-bz2 php7.0-intl php7.0-mbstring  php7.0-mcrypt php7.0-soap php7.0-xsl  php7.0-zip
pecl install swoole
echo 'extension=swoole.so' >> /etc/php/7.0/mods-available/swoole.ini
cd /etc/php/7.0/cli/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
cd /etc/php/7.0/fpm/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
  • BashOnWindows 环境下必须关闭 daemonize 选项
  • 需要修改 config.h 关闭 HAVE_SIGNALFD

DockerOnWindows

Windows 下开发可以使用 Hyper-V+Docker 来方便的开发 Swoole 应用,安装好 Docker 后再 Settings 里的 Shared Droves 选项里共享代码所在磁盘。然后使用如下命令来快速启动 Docker 容器。

docker run --rm -t -i --name myapp -p 9501:9501 -v e:/path/to:/app:rw xutongle/php:7.1-fpm /bin/bash
  • e:/path/to 为源码所在路径
  • /app 为容器内路径
  • bash 里执行 cd /app && php server.php

  • 墨斗鱼

    您好,看到 环境依赖 推荐的版本,顿时觉着我这边落后太多了,我这边的系统是 CentOS5.5/5.6 ,内核:2.6.18-194.8.1.el5,是不是无法安装使用swoole? 现在没办法更新新版的操作系统。业务上不允许![泪]

  • Rango-韩天峰

    可以尝试编译运行下。

  • 不吃草的马

    看依赖环境中php要5.3.10,但我的php是5.3.3,可以用不?

  • Rango-韩天峰

    建议升级一下PHP版本。

  • 鱼

    5.3.3 不升级能用不? 建议升级 是可以不审计吗?

  • sky

    很奇怪,我conf的时候开启了async-mysql,始终编译不过去,求指点 ./configure --with-php-config=/usr/local/php5.5/bin/php-config --enable-swoole-debug --enable-sockets --enable-ringbuffer --enable-async-mysql --enable-openssl 这一步没问题 make的时候出现下面的错误: /home/kid/software/swoole/php_swoole.h:100:2: error: #error "Enable async_mysql support, But no mysqli or mysqlnd." #error "Enable async_mysql support, But no mysqli or mysqlnd."

    但是查看环境是已经安装了: /usr/local/php5.5/sbin/php-fpm -i|grep mysql Configure Command => './configure' '--prefix=/usr/local/php5.5' '--with-config-file-path=/usr/local/php5.5/lib' '--enable-pdo' '--with-pdo-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-libxml-dir' '--enable-ftp' '--enable-sockets' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-zlib-dir' '--enable-gd-native-ttf' '--with-iconv=/usr/local/lib' '--enable-mbstring=all' '--disable-cgi' '--with-openssl' '--with-mcrypt' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-libxml' '--with-curl' '--with-xmlrpc' '--with-gettext' '--disable-cli' '--disable-debug' '--with-mhash' '--enable-pcntl' '--enable-sysvsem' '--enable-inline-optimization' '--enable-soap' '--disable-ipv6' '--enable-fpm' [08-Nov-2014 09:22:47] NOTICE: PHP message: PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0 mysql Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $ mysql.allow_local_infile => On => On mysql.allow_persistent => On => On mysql.connect_timeout => 60 => 60 mysql.default_host => no value => no value mysql.default_password => no value => no value mysql.default_port => no value => no value mysql.default_socket => no value => no value mysql.default_user => no value => no value mysql.max_links => Unlimited => Unlimited mysql.max_persistent => Unlimited => Unlimited mysql.trace_mode => Off => Off mysqli Client API library version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $ mysqli.allow_local_infile => On => On mysqli.allow_persistent => On => On mysqli.default_host => no value => no value mysqli.default_port => 3306 => 3306 mysqli.default_pw => no value => no value mysqli.default_socket => no value => no value mysqli.default_user => no value => no value mysqli.max_links => Unlimited => Unlimited mysqli.max_persistent => Unlimited => Unlimited mysqli.reconnect => Off => Off mysqlnd mysqlnd => enabled Version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $ Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password API Extensions => mysqli,pdo_mysql,mysql mysqlnd statistics =>
    PDO drivers => mysql, sqlite pdo_mysql Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $ pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

    本人的环境是: centos7(centos6.5也尝试了),php5.5.17

  • 用户upwm92h4p3

    pecl install swoole downloading swoole-1.7.8.tgz ... Starting to download swoole-1.7.8.tgz (412,906 bytes) ....................................................................................done: 412,906 bytes could not extract the package.xml file from "/build/buildd/php5-5.5.9+dfsg/pear-build-download/swoole-1.7.8.tgz" Download of "pecl/swoole" succeeded, but it is not a valid package archive Error: cannot download "pecl/swoole" Download failed install failed 求帮助

  • Rango-韩天峰

    请使用sudo

  • 用户upwm92h4p3

    谢谢,原因是没有先运行这个 apt-get install libpcre3 libpcre3-dev 我是直接用的root用户

  • 天涯

    我整个swoole.so都编译好了,phpinfo也能打印出swoole相关。测试官方的demo报错 swoole_server找不到类。swoole_client类也找不到。

  • www

    php.ini extension = swoole.so

  • 姜思

    为何只能 cli模式运行,通过web http 请求 不行了

  • 倪鹤翔

    Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/swoole.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/swoole.so: undefined symbol: le_swoole_client in Unknown on line 0

    系统是centos6.5,安装的是xampp, php5.5.19,但是报错,哪里有问题

  • 倪鹤翔

    Zend Guard Loader requires Zend Engine API version 220090626. The Zend Engine API version 220121212 which is installed, is newer. Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Guard Loader 我php版本5.5.23版本,既然又提示这个,哎,这个c底层编译问题不少啊

  • Rango-韩天峰

    这个显然是Zend Guard Loader 报错,与swoole无关。

  • 江湖笑

    环境依赖全部满足,但是sys/eventfd.h找不到,能告诉我为什么吗

  • dio

    PHP Warning: PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.10/ext/swoole.dll' - %1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3\r\n in Unknown on line 0

    我想问一下这个是什么鬼? win7+cygwin编译完的swoole.dll,也放在了php的extension目录下

  • denfils

    windows 下面安装 Makefile:180: recipe for target 'swoole.lo' failed 这个错误是什么意思? 求助

  • 范文剑

    In file included from /opt/swoole-src-swoole-1.7.19-stable/swoole.c:271:0: /usr/include/php5/ext/mysqli/php_mysqli_structs.h:63:23: fatal error: my_global.h: No such file or directory

  • 王志林

    可以安装的啊,只是跟有关

  • Giraffe

    CentOS 5.8 环境下安装成功。可以使用。没有用于生产环境。

  • peng

    我给openwrt编译的时候,提示libtool版本太新,但是给x86平台编译的时候,libtool的2.4.6的版本也是可以用的,不知道这个问题怎么解决

  • 听见你的声音

    ubuntu安装swoole成功了,也添加了swoole.so但是php -m 就是看不到swoole,phpinfo()里可以看到,不知道为什么?

  • 天风无边

    你好,差不多的问题,影响使用吗?ubuntu 14.04

  • Jakwin

    能原生支持windows平台吗?

  • wem

    为什么我用cygwin来安装总是失败呢?都安装了gcc、make、autoconf、php 和pcre-devel,仍然失败

  • 饿狼狼窝

    php -m 使用的 cli, phpinfo 使用的是 php-fpm , 它们加载php.ini不是一个, 可以使用php -i | grep php.ini查看一下Php.ini 的路径, 在里面加上swoole.so 就可以了

  • awen

    /usr/include/php5/main/php_config.h:1647:0: note: this is the location of the previous definition #define HAVE_STMT_NEXT_RESULT 1 ^ In file included from /home/yu/Downloads/swoole-src-swoole-1.8.4-stable/swoole_mysql.c:25:0: /usr/include/php5/ext/mysqli/php_mysqli_structs.h:63:23: fatal error: my_global.h: No such file or directory #include <my_global.h> 求帮助,系统是ubuntu14.04

  • 高

    php-fpm server 没有配置扩展

  • Hades

    你要看cli模式下加载的是哪个php.ini

  • 李朋飞

    今天在bash on ubuntu on windows 上装了swoole,准备尝试一下

  • 月球人simon

    BashOnWindows 下会出现 [2016-12-28 19:35:27 @16.0] WARNING swPipeUnsock_create: socketpair() failed. Error: Socket type not supported [94] [2016-12-28 19:35:27 @16.0] WARNING swFactoryProcess_start: swFactoryProcess_manager_start failed. PHP Fatal error: swoole_http_server::start(): start server failed. Error: swFactoryProcess_start: swFactoryProcess_manager_start failed. in /root/download/swoole-src-1.9.3-stable/examples/http/server.php on line 204

  • 风华尽去

    我也遇到这个问题,不知道是啥没装。

  • 什么时候发布纯Windows版本?

  • 唐建-六艺土鳖开源

    Windows 10系统增加了Linux子系统支持,BashOnWindows环境下也可以使用swoole。安装命令 apt-get install libpcre3 libpcre3-dev php php-dev php-cli php-fpm php-curl php-mysql php-intl php-xmlrpc php-geoip php-mysqlnd php-mcrypt php-memcached php-redis php-tidy php-sqlite php-json php-gmp php-gd php-readline php*-imagick

  • Nixus

    有使用 CentOS 5.1.1 可用的吗?

  • .
    .

    " BashOnWindows 环境下必须关闭 daemonize 选项 " -- 没理解在哪里关...