最近服务器要到期了,就想着把网站转移到另外一台服务器,本来打算要续费的,但是腾讯云的服务器有了新的规定,域名必须在腾讯云备案才能使用,在别的地方备案的域名需要转到腾讯云,在腾讯云在走一遍备案流程,若是备案简单,时间短也就无所谓了,就转一下,可是这个备案大家也知道,至少得一个月,于是就只能放弃腾讯云了,将站点转回备案的阿里云,以后就用阿里云了,贵点就贵点吧。
这不网站迁移过去了,死活图片不显示,各种排查,跟踪代码最后终于被我解决了。
说明
1、图片都存在,已经从另外一台服务器复制过来,所以不存在图片丢失或者无图片的问题。
2、使用的是 aq_resize 裁图,这个是关键,问题就出现在这。
不显示图片的效果
原因分析
// Check if $img_url is local. if ( false === strpos( $url, $upload_url ) ) throw new Aq_Exception('Image must be local: ' . $url); // Define path of image. $rel_path = str_replace( $upload_url, '', $url ); $img_path = $upload_dir . $rel_path; // Check if img path exists, and is an image indeed. if ( ! file_exists( $img_path ) or ! getimagesize( $img_path ) ) throw new Aq_Exception('Image file does not exist (or is not an image): ' . $img_path); // Get image info. $info = pathinfo( $img_path );
一路跟踪代码,发现到了file_exists( $img_path ) or ! getimagesize( $img_path ) 这句的时候执行不下去了,这是为什么呢?让我们看看这句的解释
这段代码用于检查图片文件是否存在,并且确保它是一个有效的图片文件。如果条件不满足,则会抛出Aq_Exception
异常,其中包含错误消息和图片路径。
具体解释如下:
file_exists($img_path)
函数用于检查指定路径的文件是否存在。如果图片文件不存在,则条件为真。getimagesize($img_path)
函数用于获取指定图片文件的尺寸信息。如果无法获取尺寸信息(即不是有效的图片文件),则条件为真。- 如果以上两个条件之一为真,则表示图片文件不存在或者不是有效的图片文件。
- 在满足以上条件时,使用
throw
关键字抛出Aq_Exception
异常,并将错误消息和图片路径作为异常信息进行传递。
这段代码的目的是确保所处理的文件是存在的,并且是有效的图片文件。如果不是有效的图片文件,可能会导致后续的操作出错,因此通过抛出异常来提醒开发者注意并做出相应的处理。
大意是说检查此图片是否存在,于是看参数 $img_path = $upload_dir . $rel_path; 参数中的$upload_dir 打印出来竟然是网站的安装目录地址 /var/html/wp/wp-content/uploads。也就是说我从另外一台服务器换过来后,这个地址变了,而数据库存储的不变。可查看 wp_option 表的 upload_path字段,就这么个原因。
解决方法
后台->设置->媒体->默认上传路径,中将路径去掉,重新保存即可。
这样这个问题就解决了。
评论抢沙发