我试图使用“手动安装”说明安装Drush 7,但是"composer install“步骤失败了,没有找到ext-pcntl扩展。托管公司(我无法控制它的选择)说,出于安全考虑,他们不愿意在生产环境中安装ext-pcntl。这样的安全关切有道理吗?在没有ext-pcntl依赖项的情况下安装Drush 7有什么解决办法吗?如果没有,我可能会尝试安装一个不具有依赖性的旧的Drush版本。
发布于 2015-08-05 19:09:20
考虑到分机简介页上的描述,是的:
PHP中的Process支持实现了Unix风格的进程创建、程序执行、信号处理和进程终止。不应在web服务器环境中启用过程控制,如果在web服务器环境中使用任何过程控制功能,则可能会发生意外结果。
强调我的。
但也不是,因为作为格雷格_1_安德森在他的回答中说,它只能被启用(甚至编译)到CLI中。
再说一次,可能是肯定的。有了像pcntl_fork这样的函数,就有可能生成一个叉形炸弹。其他不好的事情也可能发生。就我个人而言,我不允许它出现在共享服务器上。
不完全是*,但是如果您可以在本地计算机和隧道SQL端口上挂载webserver的文件系统,您可以在本地安装drush,并且仍然可以在远程网站上使用它。从德鲁什的观点来看,不会有什么不同。
*如果我错了,请纠正我。
发布于 2015-08-05 19:47:38
php.ini有一个与webserver的php环境不同的php.ini文件,因此完全可以为php-cli启用ext-pcntl,但对于web服务器环境中的php则不能启用ext-pcntl。不过,有些共享宿主环境只允许一个共享的php.ini文件。也有可能,他们可能不愿意安装它,仅仅是为了防止客户端意外地为web服务器环境启用它。
Drush在后端调用中使用ext-pcntl,因此没有它您不可能成功地使用Drush。缺少的依赖关系可能不会在Drush的预编写版本中强制执行,所以安装Drush 6或更高版本可能有效,前提是您不调用任何将重新调度回drush的函数(例如,使用drush pm-updatecode,然后是drush updatedb,而不是使用drush pm-update --但这并不意味着您将在托管平台上使用pm-update更新您的活动站点,对吗?)
https://drupal.stackexchange.com/questions/167938
复制相似问题