环境依赖 [编辑本页]

  • 仅支持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 libpcre3 libpcre3-dev php5 php5-dev php5-cli php5-fpm php5-curl php5-mysql php5-intl php5-xmlrpc php5-geoip php5-mysqlnd php5-mcrypt php5-memcached php5-redis php5-tidy php5-sqlite php5-json php5-gmp php5-gd php5-readline php5-imagick
pecl install swoole
echo 'extension=swoole.so' >> /usr/php5/mods-available/swoole.ini
cd /usr/php5/cli/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
cd /usr/php5/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-韩天峰

    可以尝试编译运行下。

  • 开心赚(kaixinzhuan)

    可以尝试编译运行下。

  • zhouleyu

    可以尝试编译运行下。

  • 不吃草的马

    看依赖环境中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 可用的吗?