昨天从我的帖子跟进(用PHP启用cURL)
问题是PHP无法加载php_curl.dll.我已经尝试了几个步骤,包括取消注释extension=php_curl.dll,确保路径中的依赖项libeay32.dll和ssleay32.dlleixst,重新下载php_curl.dll,替换旧的,最后将文件复制到我的System32文件夹中.
我正在使用Apache 2.2和PHP 5.4.14.我使用他们的个人包安装了两个; 我没有使用XAMP或WAMP.我正在使用Windows 7 64位.
任何帮助都将不胜感激.
Jps*_*psy 68
libeay32.dll并且ssleay32.dll必须是路径可访问php_curl.dll才能成功加载.
但是将它们复制到Apache ServerRoot,Apache \bin\,Window \System32\,或者更糟糕的是将它们复制到Windows主目录中是一个糟糕的黑客攻击,甚至可能不适用于较新的PHP版本.
正确的方法是将PHP路径添加到Windows Path变量中.在Control Panel -> System点击高级系统设置和使用按钮环境变量.在系统变量下,您将找到SystemPropertiesAdvanced变量.编辑并 追加; C:\ PHP 前置Path- 或者PHP文件夹的路径.然后完全停止Apache并再次启动它(简单的重启可能还不够).
更新2017-05:
我改变了上述指示预先考虑与PHP路径,而不是Path变量追加到它.这样可以确保使用PHP路径中的DLL,而不是系统其他路径中的任何其他(过时的)版本.
更新2018-04:
如果您已经选择了错误的方法并将任何PHP DLL复制到Apache或Windows路径,那么我强烈建议您再次删除它们!如果不这样做,以后尝试更新PHP时可能会遇到麻烦.如果新的PHP版本带来了这些DLL的新版本,但您的旧DLL仍然在系统或Web服务器路径中停留,则可能首先找到这些旧的DLL.这肯定会阻止PHP解释器启动.这些错误很难理解和解决.因此,如果您在那里复制它们,那么现在可以更好地清理并从Windows和Apache路径中删除任何提到的DLL.
(感谢@EdmundTam和@WasimA.在评论中指出了这个问题!)
小智 15
在PHP 5.6.x版本中,您应该执行以下操作:
Windows\system32从php文件夹移动到文件夹DLL :
libssh2.dll, ssleay32.dll, libeay32.dll并php_curl.dll从php ext文件夹中
Apache24\bin从php文件夹移动到文件夹:
libssh2.dll
Run Code Online (Sandbox Code Playgroud)
另外,不要忘了取消注释extension=php_curl.dll中php.ini
BIO*_*ARD 14
解决方案:将libeay32.dll,libssh2.dll,ssleay32.dll文件放在httpd.conf的ServerRoot指令中指定的目录下.可以在php根文件夹下找到这些dll.
原因:
问题是php_curl.dll在加载时需要访问以下库:libeay32.dll,libssh2.dll,ssleay32.dll如果你把它们放在./php/ext目录中或者你把php扩展名放在php root中它没有意义DIR.
当然,您可以将它们放在c:\ Windows或PATH中定义的某个全局文件夹中,但如果您不想这样做,并且您希望您的apache + php安装是可移植的:
在httpd.conf中的ServerRoot中指定的路径被视为php的主路径.行为类似于在./index.php中包含./path/to/some.php文件的情况,some.php文件的主路径仍然是./ index.php所在的目录.
简而言之,只需将这三个dll放在httpd.conf ServerRoot指令中指定的目录中,并且php_curl.dll将无法再次加载.
您正在加载,.dll因此您的操作系统必须是Windows.
首先php.ini通过运行检查您正在使用的文件phpinfo()
然后通过检查extension_dir该文件中的属性来检查扩展文件夹的位置.
接下来确保php_curl.dll该文件夹中存在该文件夹.如果不复制它.
重新启动apache并检查它是否有效.
由于您单独安装了软件包,所以也这样做:
将dll文件复制php_installation_folder/extensions到apache_installation_folder/bin
| 归档时间: |
|
| 查看次数: |
86668 次 |
| 最近记录: |