我遇到了一个非常奇怪的问题。我正在调试我们的 EC2 实例上的服务器 500 错误脚本,发现我们没有安装 ioncube 加载器。所以我去安装它们,我在 处创建了一个新文件,/etc/php.d/zend.ini
最初我插入了 的值extension=/usr/local/ioncube/ioncube_loader_lin_5.3.so
并重新启动了 httpd,此时它告诉我:
The ionCube Loader is a Zend-Engine extension and not a module
Please specify the Loader using 'zend_extension' in php.ini
PHP Fatal error: Unable to start ionCube Loader module in Unknown on line 0
因此我将 zend.ini 的内容更改为 zend_extension=/usr/...etc。现在,当我尝试重新启动 httpd 时,出现此错误:
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
我甚至无法运行,/etc/init.d/httpd stop
否则会出错。我已经删除了 zend.ini,看看是否是它导致的,但似乎不是。
有任何想法吗?
答案1
如果按照 David Schwartz 的建议,没有任何程序在端口 80 上监听,那么问题很可能是Listen 80
您的 Apache 配置中有两个指令。它们可能不相邻,甚至不在同一个文件中。
尝试grep -r Listen /etc/httpd
找到它们并删除其中一个。
答案2
应该删除 Zend-server
yum zend-server remove
消除
rm -f /var/lock/subsys/httpd
关闭进程httpd
ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
查看 apache 状态
/etc/init.d/httpd status
然后启动 apache
/etc/init.d/httpd start