在WP引擎,我们的生产和暂存WordPress环境都运行PHP8.0。
使用WP引擎 Jmeter 板,我自动复制生产到暂存,并准备开始一个新的功能,但立即,我看到了一个新的项目,在暂存调试日志中,从来没有出现在生产网站/日志.我还没有能够向前移动,因为我已经检查了它是一个确切的副本的网站和WP引擎确认网站环境是相同的(php.ini等)
PHP Warning: simplexml_load_file(): I/O warning : failed to load
external entity
/wp-content/uploads/2021/11/Group-345.svg;
in /nas/content/live/ecistage/wp-
content/themes/deci/inc/helpers.php
on line 246
helpers.php
以前创建WordPress主题的开发人员使用ACF Flexible Content构建了它。该错误与一个帮助函数有关,该函数获取SVG真实的大小(宽度+高度/视图框)并在宽度,高度属性中使用它。
function fix_wp_get_attachment_image_svg( $image, $attachment_id, $size, $icon ) {
if ( is_array( $image ) && preg_match( '/\.svg$/i', $image[0] ) ) {
if ( is_array( $size ) ) {
$image[1] = $size[0];
$image[2] = $size[1];
} elseif ( ( $xml = simplexml_load_file( $image[0] ) ) !== false ) {
$attr = $xml->attributes();
$viewbox = explode( ' ', $attr->viewBox );
$image[1] = isset( $attr->width ) && preg_match( '/\d+/', $attr->width, $value ) ? (int) $value[0] : ( count( $viewbox ) == 4 ? (int) $viewbox[2] : null );
$image[2] = isset( $attr->height ) && preg_match( '/\d+/', $attr->height, $value ) ? (int) $value[0] : ( count( $viewbox ) == 4 ? (int) $viewbox[3] : null );
} else {
$image[1] = $image[2] = null;
}
}
return $image;
}
add_filter( 'wp_get_attachment_image_src', 'fix_wp_get_attachment_image_svg', 10, 4 );
第246行是elseif
语句:
} elseif ( ( $xml = simplexml_load_file( $image[0] ) ) !== false ) {
Group-34.svg
的含量
https://gist.github.com/billiemead/c0d1a2703cdac8f4423b9ddd93cfcca7?short_path=5a8a6c7
到目前为止我已经:
·检查php_xml是否正在加载
·检查php.ini中的allow_url_fopen是否打开
·允许URL包含已打开
·创建了包含以下内容的simplexml.php:
<?php
if (function_exists('simplexml_load_file')) {
echo "simpleXML functions are available.<br />\n";
} else {
echo "simpleXML functions are not available.<br />\n";
}
它确实回来了
simpleXML函数可用
1条答案
按热度按时间gr8qqesn1#
我面临着同样的问题。在我的情况下,我的网站是在Azure服务器上。当我将开发网站迁移到Live(Azure托管WP计划)时,我面临着同样的问题。
此问题是由映像路径引起的。
一些托管的WordPress主机被配置为使用图像的相对URL而不是绝对URL。
在下面这行代码中,它检查图像的URL。在我/我们的情况下,这个条件本身将失败,因为相对路径返回404没有,因为它没有site_url。
要确保是这种情况,您可以尝试在图像URL之前添加site_url(网站URL),如下面函数的第一行所示。
在进行此更改后,如果功能正常工作,则它必须是一个问题,因为图像URL(相对/绝对)。
如果你检查wp-config.php,你可以找到下面的代码行,它改变了图像显示在相对路径(/wp-content/uploads/2022/01/filename-png)而不是绝对路径(www.sitename.com/wp-content/uploads/2022/01/filename-png)
可以通过在wp-config.php中注解此代码来修复此问题
此外,请确保删除添加到函数中的代码,以便将site_url添加到图像路径的开头。