php实现下载图片的方法
发布时间:2025-05-22 09:30:39 发布人:远客网络
一、php实现下载图片的方法
php实现下载图片的方法:1、使用“file_get_contents”实现下载图片;2、通过使用CURL实现下载图片;3、通过使用fopen实现下载图片即可。
本文操作环境:windows7系统、PHP7.1版,DELL G3电脑
本文演示3个从远程URL下载图片,并保存到本地文件中的方法,包括file_get_contents,curl和fopen。
function dlfile($file_url,$save_to){$content= file_get_contents($file_url); file_put_contents($save_to,$content);}
function dlfile($file_url,$save_to){$ch= curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch,CURLOPT_URL,$file_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$file_content= curl_exec($ch); curl_close($ch);$downloaded_file= fopen($save_to,'w'); fwrite($downloaded_file,$file_content); fclose($downloaded_file);}
function dlfile($file_url,$save_to){$in= fopen($file_url,"rb");$out= fopen($save_to,"wb"); while($chunk= fread($in,8192)){ fwrite($out,$chunk, 8192);} fclose($in); fclose($out);}
下载与保存完整方法(输出日志那行可删除):
private function downloadImage($url){$ch= curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);$file= curl_exec($ch); curl_close($ch);$this->saveAsImage($url,$file);} private function saveAsImage($url,$file){$filename= pathinfo($url, PATHINFO_BASENAME);$dirname= pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_DIRNAME);$path='public'.$dirname.'/'$fullpath='public'.$dirname.'/'.$filename;//如果目录不存在,则创建 if(!is_dir($path)){ mkdir($path, 0777, true);} if(file_exists($fullpath)){//$this->output->writeln("【已存在】输出路径".$fullpath);} else{$resource= fopen($fullpath,'a'); fwrite($resource,$file); fclose($resource);//$this->output->writeln("【已保存】输出路径".$fullpath);}}
二、如何在linux上安装php5.6,谢谢,
不知道你问的linux,是哪个发行版本,常用的如 ubntu,centos,debian等。
我列一个centos7(服务器常用这个版本)的安装方法吧
centos7默认使用yum install来安装程序,但默认源安装的php是5.4的,版本比较低,
要安装高版本的,要么下载源代码手动编译安装,但对不熟悉的,万一出点错误,会越搞越乱。我一般使用epel源安装php,里面各个版本都有,最新的php7.3
rpm-ivh
这里面的url是目前我用的,如果提示出错,就是换url了,可以在电脑上手动打开epel源列表去检查 epel-release是哪个版本,换上对应的名字
rpm-Uvh
yuminstallphp56wphp56w-mysqlphp56w-pdophp56w-gdphp56w-sslphp56w-mbstringphp56w-cliphp56w-xmlphp56w-bcmath
我这里列的是一些常用的php扩展,如果需要其它的,手动加上即可
我这里列的是一些常用的php扩展,如果需要其它的,手动加上即可
如果需要安装php其它版本,把包名里的56改成对应版本即可,如
yuminstallphp71wphp71w-mysqlphp71w-pdophp71w-gdphp71w-sslphp71w-mbstringphp71w-cliphp71w-xmlphp71w-bcmath
yuminstallphp72wphp72w-mysqlphp72w-pdophp72w-gdphp72w-sslphp72w-mbstringphp72w-cliphp72w-xmlphp72w-bcmath
可对应安装php7.1和php7.2,这种安装方法,会默认配置好对应的设置,php.ini在/etc/中查找,命令行也默认启用了(php-cli)
可对应安装php7.1和php7.2,这种安装方法,会默认配置好对应的设置,php.ini在/etc/中查找,命令行也默认启用了(php-cli)
三、ubuntu多版本php切换
为了学习swoole,我将Ubuntu系统上的php版本从7.0升级到了7.2。升级过程如下:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get install php7.2-mbstring
sudo apt-get install php7.2-gd
sudo apt-get install php7.2-dom
sudo apt-get install php7.2-mysql
sudo apt-get install php7.2-curl
为了安装swoole,建议直接使用pecl install swoole,因为它能一步到位。手动编译可能会遇到因版本不匹配的问题。
若出现"ERROR: Module php7.0 does not exist!",执行以下命令:
sudo apt-get install libapache2-mod-php7.0
切换后,浏览器查看phpinfo()应显示7.2版本,但命令行CLI仍显示7.0,需执行:
sudo update-alternatives--set php/usr/bin/php7.2
这样,命令行CLI执行php-v亦能显示7.2版本。
若需要在Ubuntu上切换php版本,可使用sudo service php7.0-fpm stop/restart。然而,这只能切换php-fpm,即web端,命令行CLI端的版本仍无法切换。
在升级版本后,我尝试安装了php7.1,第二天启动电脑后发现所有laravel项目均出现错误。通过查阅资料发现是版本问题,查看php-v显示为7.2,但命令行CLI显示为7.0。为了解决此问题,我重启了php,发现错误根源是端口被占用,导致php fastCGI程序启动失败。
为解决此问题,我使用命令ps aux|grep php来查看所有php-fpm进程。发现有一个php7.1-fpm进程,通过获取其进程ID并kill掉该进程,成功重启了php。
尝试执行killall php-fpm命令未能解决问题,最终使用了上述方法,通过查询进程并根据进程ID杀死进程来解决此问题。