在容器中运行的 Ubuntu 16.04 上安装 php7.0-fpm 时出错

在容器中运行的 Ubuntu 16.04 上安装 php7.0-fpm 时出错

尝试安装 php7.0-fpm

# apt-get install php7.0-fpm

我收到以下错误(复制自/var/log/apt/term.log):

Preparing to unpack .../php7.0-fpm_7.0.8-0ubuntu0.16.04.2_amd64.deb ...
Unpacking php7.0-fpm (7.0.8-0ubuntu0.16.04.2) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up php7.0-fpm (7.0.8-0ubuntu0.16.04.2) ...

Creating config file /etc/php/7.0/fpm/php.ini with new version
invoke-rc.d: initscript php7.0-fpm, action "start" failed.
dpkg: error processing package php7.0-fpm (--configure):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 php7.0-fpm

因此存在问题,但问题的原因是什么呢?

根据建议这里,我尝试了以下操作,但没有发现错误:

root@ubuntu:/etc/apt# /usr/sbin/php-fpm7.0 --test
[08-Sep-2016 08:44:44] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful

我还尝试按照建议删除并重新安装 php7.0-fpm这里,但这并没有什么区别。

您能建议如何修复此错误吗? 是否有其他更有用的错误消息?

更新:

在 Linux 容器上安装 php7.0 时会发生这种情况。在来自同一托管提供商的虚拟机上安装时不会发生此错误。因此,安装可能正在尝试设置容器“超出范围”的内容。

我的“解决方法”是使用虚拟机而不是容器:-)

答案1

我在使用 Elastichosts 容器服务器(Arachsys 容器)时遇到了类似的问题。让 php7.0-fpm“说出”错误的唯一方法是手动以守护进程模式启动它:

/usr/sbin/php-fpm7.0 -D

这产生了有关缺少套接字文件的错误:

ERROR: unable to bind listening socket for address '/run/php/php7.0-fpm.sock': No such file or directory (2)

事实证明,/run/php安装过程中从未创建过该目录。手动创建该目录并赋予其正确的所有者 (www-data) 已为我解决了该问题(重新启动后)。

答案2

为 sock-file 创建目录:

mkdir -p /var/run/

相关内容