Httpd libphp5.so ldap错误
由Julz解决 谢谢大家!Httpd libphp5.so ldap错误,php,apache,homebrew,osx-yosemite,Php,Apache,Homebrew,Osx Yosemite,由Julz解决 谢谢大家! $ brew uninstall php56 $ brew install php56 --without-ldap 所以,我需要一些帮助,我四处看看,但我找不到任何东西来解决这个问题 我已经通过自制软件安装了Apache和PHP,但由于某些原因,它们似乎无法协同工作 Apache通过Homebrew/Apache tap与httpd24一起安装—启用重写—启用ssl—使用特权端口—与http2一起安装 PHP通过homebrew/homebrew PHP tap与
$ brew uninstall php56
$ brew install php56 --without-ldap
所以,我需要一些帮助,我四处看看,但我找不到任何东西来解决这个问题
我已经通过自制软件安装了Apache和PHP,但由于某些原因,它们似乎无法协同工作
Apache通过Homebrew/Apache tap与httpd24一起安装—启用重写—启用ssl—使用特权端口—与http2一起安装
PHP通过homebrew/homebrew PHP tap与php56一起安装——与homebrew apxs一起安装——与apache一起安装——与homebrew curl一起安装——与homebrew openssl一起安装
它们都安装正确,我在httpd.conf中加载libphp5.so;和您一样,当我运行sudo httpd-k start/restart时,我得到以下信息:
httpd:
Syntax error on line 173 of /usr/local/etc/apache2/2.4/httpd.conf:
Cannot load /usr/local/Cellar/php56/5.6.20/libexec/apache2/libphp5.so into server:
dlopen(/usr/local/Cellar/php56/5.6.20/libexec/apache2/libphp5.so, 10):
Symbol not found: _ldap_control_find
Referenced from: /usr/local/Cellar/php56/5.6.20/libexec/apache2/libphp5.so
Expected in: /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
in /usr/local/Cellar/php56/5.6.20/libexec/apache2/libphp5.so
我一辈子都搞不清楚出了什么问题,有什么帮助吗?Apache在没有php库的情况下运行良好。我今天通过自制升级了php56,并使用了相同的pb。这似乎与ldap支持有关 在提供修复之前,我建议卸载php56,然后在不使用ldap的情况下重新安装
$ brew uninstall php56
$ brew install php56 --without-ldap
简单快速。对于其他面临此问题的人,如果他们无法禁用LDAP支持,因为他们正在处理的项目需要它,另一种方法是让Homebrew通过从其源代码构建PHP来重新安装PHP,下面我将介绍这些技巧,以及多年来我发现的一些技巧,这些技巧对于调试与PHP相关的问题和将PHP加载到web服务器环境(在本例中为Apache)非常有用。我希望下面的信息对其他人有用,并节省其他人花在解决这个问题上的时间
对于许多Homebrew软件包,当您只需执行
brew安装
命令时,Homebrew将安装您正在安装的软件的预编译版本(Homebrew社区的成员乐于提供)。在大多数情况下,这非常好,因为它节省了大量时间(因为代码已经编译,一些复杂的代码库可能需要几个小时才能编译!),而且在大多数情况下,预编译版本就是您想要的
但是,当预编译版本似乎包含错误或可能与其他已安装软件冲突时,从源代码安装软件包(或者让Homebrew代表您从源代码重新安装软件包)可能能够解决您遇到的问题。但应注意,此处的建议解决方案可能不适用于所有人或所有类似问题-结果取决于许多变量,例如错误实际存在的位置-例如,如果错误存在于正在安装的软件的源代码中,则此解决方案不太可能有帮助,但是,如果错误是由软件配置或与其他代码一起预打包的方式引起的,那么它可能是有用的,谢天谢地,在这种情况下是有用的
修复问题:通过自制从源代码重新安装PHP
通过运行以下命令,我能够在OS X 10.10.5 Yosemite上从自制成功安装PHP 5.6:
brew重新安装php56——从源代码构建
请注意特别的Homebrew--从源代码构建
标志–这告诉Homebrew不要安装正在安装的软件包的预构建版本,而是从其源代码存储库重新构建软件包
您可能会发现,在运行上述命令之前,我首先必须删除PHP5.6(通过brew卸载php56
)(在执行uninstall
后,实际上可以将reinstall
子命令更改为justinstall
,使其语义正确,但无论包是否已安装,reinstall
命令都有效)
重新安装PHP后重新安装PHP扩展模块
我还发现有必要在通过源代码构建重新安装PHP5.6之后运行相关的brew重新安装php56-
,重新安装我安装的其他PHP模块包(如OPCache)
通过运行brew list | grep PHP
,您可以查看通过自制程序安装的其他PHP模块包。只需重新安装所有PHP模块包应该是安全的,您可以通过运行以下程序轻松完成此操作:
brew列表| grep php56 | xargs-I{}brew重新安装{}
如果您想在重新安装时更有针对性,您应该能够通过查看启动web服务器的输出、查看web服务器日志或查看在命令行上简单调用PHP二进制文件的输出,来查看哪些PHP模块无法加载(如果有任何冲突)(假设路径设置正确,指向刚用自制软件安装的PHP版本,通常是)
在这些地方查找调试信息的一些注意事项如下:
apachehttpd启动调试输出
要查看在OS X上启动Apache的详细输出,可以运行以下命令:
sudo httpd-k重启-e调试
这是运行sudo apachectl restart
的一种替代方法,它是围绕httpd
二进制文件的包装脚本,-k restart
选项告诉httpd
要执行的功能(在这种情况下,要重新启动–可以通过运行man httpd
查看所有支持的选项),并且-e
标志允许您设置详细级别-默认设置为有效静默。将-e
设置为debug
级别可提供最高级别的输出,因此,如果加载一个已配置的Apache模块时出现问题,您将在运行上述命令的输出中看到它。因此,这是o如果您发现您的Apache实例没有按预期工作,那么ften是一个很好的起点
OS X上的Apache HTTPD错误日志
要查看OS X上的Apache日志,请打开Console.app(可在/Applications/Utilities/
文件夹中找到)和exp
Warning: PHP Startup: sodium: Unable to initialize module
Module compiled with build ID=API20131226,NTS,debug
PHP compiled with build ID=API20131226,NTS
These options need to match
in Unknown on line 0
PHP 5.6.20 (cli) (built: Apr 14 2016 14:23:48)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo