如何与Zend Server一起安装pnctl的php cli

我有在Ubuntu 11.10上运行的PHP 5.2的Zend Server CE 5.6。 现在需要运行一个使用PHP的pnctlfunction的命令行PHP脚本。

首先,我的path中没有PHP命令行,所以我从Zend创build了一个符号链接:

sudo ln -s /usr/local/zend/bin/php /usr/bin 

但是,当我运行我的脚本,我现在得到这个错误:

PHP致命错误:调用未定义函数pcntl_fork()

Zend Web控制面板不提供模块列表中的pnctl,那么如何获得此function?

使用apt-get直接安装PHP安装Zend实例是否安全? 如果是这样,我怎么确定我得到版本5.2? 我想以下将拉入PHP 5.3中:

 apt-get install php5-cli 

我大概可以混淆,但任何指针,以帮助我避免让一个烂摊子将不胜感激!

为apache安装扩展pcntl

 cd path/to/php/ext/pcntl/ phpize && ./configure && make install echo "extension=pcntl.so" >> /path/to/php.ini apachectl restart 

检查一切是否正常。

 php -m | grep pcntl 

outpout必须是pcntl

首先,不要使用符号链接。 相反,扩展你的$ PATH:

 export PATH=$PATH:/usr/local/zend/bin:/usr/local/zend/sbin 

(你可以把它放在你的$ HOME / .bashrc中)

第二点,pcntl不是一个模块,它是在PHP中编译的。 您可能缺less一些库path。 在调用php之前尝试类似的东西:

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zend/lib::/usr/local/zend/lib64 

也许不是一个满意的答案,但我最终从另一个虚拟机中复制了以下文件,这个虚拟机恰好有一个工作安装(都是PHP 5.2。*和64位Ubuntu) :

 /usr/local/zend/lib/php_extensions/pcntl.so 

然后,configurationPHP使用这行:

 extension=pcntl.so 

(上面可能会在php.ini中,但我把它放在/usr/local/zend/etc/ext.d/pcntl.ini中,并链接到/usr/local/zend/etc/conf.d)。

不过,我仍然无法解释为什么在全新的Zend安装中缺less这个文件。 此外,我不想只是从另一台机器复制.so文件,而不是100%的兼容性,但它似乎运行没有任何问题。