在win环境下,使用apache+php运行网站时,有时候需要使用到curl或curl支持才能正常的运行网站功能。
PHP中的curl库能够允许与各种的服务器之间使用多种的类型协议进行连接与交互.能够提取网页内容模拟页面的访问与提交.
示例:
<?php
$zqdx = curl_init();
curl_setopt($zqdx, CURLOPT_URL, "目标网址url链接");
curl_setopt($zqdx, CURLOPT_HEADER, 0);
curl_exec($zqdx);
curl_close($zqdx);
?>
一个最简单的curl示例,首先初始化创建一个新cURL资源$zqdx,curl_setopt设置目标的URL网址和与访问的选项参数,如post、get或者访问的head头之类的信息
curl_exec访问URL然后它传递浏览器,curl_close关闭与释放cURL的资源.
一般,如果没做特殊的配置,这样的代码是不能正常运行或有用的,我们一般会需要修改php程序的php.ini配置文件
将 ;extension=curl这行语句前面的分号去除:
extension=curl
这样按照通用的方法来说就能找到扩展库中的php_curl.dll.
但由于运行环境各有不同,经常会遇到Unable to load dynamic library 'curl'找不到curl这个模块的php错误.
按照网上所说的将php文件夹里的libssh2.dll,libeay32.dll,ssleay32.dll三个文件的放到c系统盘中的windows文件夹、system32文件夹或syswow64文件夹里.往往还是不能解决什么问题.
还有说在apache的配置文件中直接LoadFile 加载php的目录中libeay32、libssh2等这几个扩展的路径也没用.
那该怎样解决呢?
一般我们可以将libeay32.dll、libssh2.dll与ssleay32.dll 三个文件到apache bin目录下
即:libssh2应用程序扩展、libeay32 openssl library扩展以及、dll与ssleay32扩展
但是,在php7.4、php8.0中只有libssh2.dll文件,没有其中的两个扩展文件,我们该怎样找到这些扩展文件呢?
其实道理很简单,只需要右键查看php文件夹.dll格式的扩展文件详细信息为openssl library的dll文件
即:libcrypto-1_1-x64.dll与libssl-1_1-x64.dll这两个文件将其与libssh2.dll一同复制到apache的bin文件夹里去即可,如果遇到的apache版本中已存在可以不用跳过以有的.
然后,通过命令提示符重新启动Apache Web服务器,并在网站根目录下新建一个名为tz.php的文件,内容如下:
<?php
echo phpinfo();
?>
最后,打开浏览器并访问tz.php,可以看到关于curl模块和其他扩展组件的状态信息。
在上面的内容中,我们已经介绍了如何在Windows环境中使用Apache + PHP运行网站并启用curl扩展。接下来我们将讨论如何在Linux环境中实现这一目标。
要启用curl扩展,我们需要确保已经在php.ini文件中取消了对该扩展的注释。同样,我们也需要将相应的库文件添加到系统库路径中。在大多数Linux发行版中,可以使用apt-get命令或yum命令来安装所需的库。
例如,在Ubuntu中,可以使用以下命令来安装curl库:
bash
sudo apt-get install libcurl4-gnutls-dev
而在CentOS中,可以使用以下命令:
bash
sudo yum install curl-devel
接下来,我们需要将PHP编译器指向curl库的位置。为此,可以在phpize命令后输入以下命令:
bash
./configure --with-curl=/path/to/curl
请将"/path/to/curl"替换为实际的curl库路径。在Ubuntu中,这通常是"/usr/lib/x86_64-linux-gnu/",而在CentOS中,可能是"/usr/local/lib/"。
编译完成后,再次运行make && sudo make install命令以安装新的PHP扩展。最后,更新PHP.ini文件并重启Web服务器。
如果您在Linux环境中遇到了关于curl的问题,建议您检查系统的日志文件(通常位于/var/log/)以获取更多信息。此外,可以尝试使用shell脚本编写一些简单的测试代码以验证curl的功能。