Workerman项目从Windows迁移到Linux需确保PHP环境支持pcntl和posix扩展、重装Linux原生依赖、仅复制业务代码并正确部署,最后以守护模式启动验证进程。

把Windows下开发好的Workerman项目(比如workerman-chat)放到Linux服务器上跑起来,不是简单复制粘贴就能用的——直接扔过去大概率启动失败,报错说找不到pcntl_fork或posix_getpid。
确认Linux PHP环境是否达标
在终端里执行这行命令:
curl -Ss https://www.workerman.net/check | php
它会自动检测pcntl、posix、stream_socket_server等关键项。如果看到红色报错,别跳过这步——【pcntl和posix缺一不可,少一个Workerman根本起不来】。
CentOS/RHEL用户运行:
yum install php-process -y
Ubuntu/Debian用户运行:
apt-get install php-cli php-dev php-mbstring -y
装完再跑一次检测脚本,直到全部显示绿色“OK”为止。注意:有些PHP版本的CLI SAPI配置独立于Web SAPI,务必检查php --ini输出的php.ini路径,确认extension=pcntl.so和extension=posix.so已启用。
重新安装Workerman依赖
绝对不要把Windows下生成的vendor目录拷到Linux上用——里面混着Windows专用的autoload逻辑和扩展兼容层,Linux加载时直接报错。
进入你的项目根目录(比如/mnt/mychat),执行:
composer require workerman/workerman
如果国内源慢,先换镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
再执行require命令。这一步会拉取Linux原生适配的Workerman代码,同时生成正确的autoloader。
部署你的业务代码
只复制你写的业务文件,其他一律不碰。
方法一:直接替换Applications目录
把Windows项目里的Applications/YourApp/整个文件夹,复制到Linux项目根目录下的Applications/下。确保路径结构完全一致,比如Linux上是/Applications/Chat/Bootstrap.php,就别改成/Applications/chat/。
方法二:用符号链接(适合多人协作或频繁更新)
ln -sf /data/chat-app /your-linux-project/Applications/Chat
【替换前务必删掉Linux项目中原有的Applications目录,否则旧文件残留会导致类加载冲突】。
启动服务
第一步:测试能否启动
php start.php start
看到“Start success”说明基础运行通了。此时按Ctrl+C停止。
第二步:切守护模式
php start.php start -d
这会让Workerman脱离终端后台运行。关掉SSH窗口,服务仍在。
第三步:验证进程存活
ps aux | grep start.php
应看到至少两个进程:一个master,若干worker子进程。如果只有master没有worker,检查$worker->count是否设为大于1,且系统ulimit -n值足够(建议≥65535)。


















