我有一个改变buddypress封面图像模板的脚本。该文件在我的服务器上运行良好,但当我将其移动到客户端服务器时,它就坏了。我一直在犯错误
Parse error: syntax error, unexpected end of file in /var/www/vhosts/womenschapter.com/httpdocs/wp-content/themes/jupiterx-child/buddypress/members/single/cover-image-header.php on line 102
虽然这两个站点的文件都是相同的,但我的工作非常完美。我还可以添加任意多的php结束标记,但仍然会出现相同的错误。我几乎觉得新服务器的配置可能会有所不同,但我在这里完全一无所知。
这是我的代码:
<?php
/**
* BuddyPress - Users Cover Image Header
*
* @since 3.0.0
* @version 3.0.0
*/
?>
<div class="DMUserContent">
<!-- New HTML -->
<a class="DMImageColumn" href="<?php bp_displayed_user_link(); ?>">
<?php bp_displayed_user_avatar( \'type=full\' ); ?>
</a>
<div class="DMContentColumn">
<h3>MEET</h3>
<?php if ( bp_is_active( \'activity\' ) && bp_activity_do_mentions() ) : ?>
<h1>
<?php
$DMName = bp_profile_field_data( \'field=First Name\', bp_displayed_user_id() );
?> <?php
$DMName .= bp_profile_field_data( \'field=Last Name\', bp_displayed_user_id() );
echo $DMName;
?>
</h1>
<!-- <h5>@<?php // bp_displayed_user_mentionname(); ?></h5> -->
<?php endif;
?>
<h4><?php bp_profile_field_data( \'field=Job Title\', bp_displayed_user_id() ); ?> - <?php bp_profile_field_data( \'field=Company Name\', bp_displayed_user_id() ); ?></h4>
<p class="DMSPshortDescription"><?php bp_profile_field_data( \'field=Short description of your services\', bp_displayed_user_id() ); ?></p>
<div class="Divider"></div>
<p class="DMSPWebLink"><?php echo bp_profile_field_data( \'field=Website\', bp_displayed_user_id()); ?></p>
<div class="DMSPSocialMediaLinks">
<?php
if (bp_get_profile_field_data( \'field=Instagram name\', bp_displayed_user_id()) != null && bp_get_profile_field_data( \'field=Instagram name\', bp_displayed_user_id()) != "" ){ ?>
<a class="DMSPinstagram" href=\'https://instagram.com/<?php echo bp_profile_field_data( \'field=Instagram name\', bp_displayed_user_id()); ?>\'>
<?php echo bp_profile_field_data( \'field=Instagram name\', bp_displayed_user_id()); ?></a>
<?php
} ?>
<?php
if (bp_get_profile_field_data( \'field=Facebook name\', bp_displayed_user_id()) != null && bp_get_profile_field_data( \'field=Facebook name\', bp_displayed_user_id()) != "" ){ ?>
<a class="DMSPfacebook" href=\'https://facebook.com/<?php echo bp_profile_field_data( \'field=Facebook name\', bp_displayed_user_id()); ?>\'>
<?php echo bp_profile_field_data( \'field=Facebook name\', bp_displayed_user_id()); ?></a>
<?php
} ?>
<?php
if (bp_get_profile_field_data( \'field=Twitter name\', bp_displayed_user_id()) != null && bp_get_profile_field_data( \'field=Twitter name\', bp_displayed_user_id()) != "" ){
?>
<a class="DMSPtwitter" href=\'https://Twitter.com/<?php echo bp_profile_field_data( \'field=Twitter name\', bp_displayed_user_id()); ?>\'>
<?php echo bp_profile_field_data( \'field=Twitter name\', bp_displayed_user_id()); ?></a>
<?php
} ?>
<?php
if (bp_get_profile_field_data( \'field=Email\', bp_displayed_user_id()) != null && bp_get_profile_field_data( \'field=Email\', bp_displayed_user_id()) != "" ){
?>
<a class="DMSPemail" href=\'mailto:<?php echo bp_profile_field_data( \'field=Email\', bp_displayed_user_id()); ?>\'>
<?php echo bp_profile_field_data( \'field=Email\', bp_displayed_user_id()); ?></a>
<?php
} ?>
</div>
<?php
if ( bp_is_my_profile() ){
?> <a href="<?php bp_displayed_user_link()?>profile" class=\'WCStyleButton\'>Edit Profile</a>
<?php }
?>
<div id="item-header-content">
<?php
bp_nouveau_member_header_buttons(
array(
\'container\' => \'ul\',
\'button_element\' => \'button\',
\'container_classes\' => array( \'member-header-actions\' ),
)
);
?>
<?php bp_nouveau_member_hook( \'before\', \'header_meta\' ); ?>
</div>
</div>
</div>
最合适的回答,由SO网友:Sally CJ 整理而成
因此,问题已经通过注释解决,问题的当前状态已经包括更正的代码。但我想我应该把这个答案贴出来,作为对你、我和所有阅读这篇文章的人的提醒
首先,这里有一段有用的摘录an article on WP Engine:
“意外的文件结尾”错误不是WordPress特有的,任何基于PHP的网站上都可能发生。此特定错误意味着错误消息中提到的文件突然结束,没有正确的结束标记,因此无法解析代码。
下面是帮助解决问题的评论:
还有{?>
(将其更改为{ ?>
) 和)?>
(将其更改为) ?>
) - i、 e.再次添加空格(或新行,以更好的为准……)在?>
(以及<?php
).
并基于this answer on Stack Overflow, 我认为问题在于{?>
应该写为{ ?>
(即一个左括号,后跟一个空格,然后是结束PHP标记)。
总之,you should not put brackets directly close to the opening/closing PHP tag, but separate it with a space:
// Bad
{?>
<?php}
// Good
{ ?>
<?php }
然而,关于这一点:“虽然两个站点的文件都是相同的,但我的工作非常完美。”;这可能是因为一些PHP安装/设置允许使用直接靠近开始/结束PHP标记的括号。因为我的第一个测试似乎就是在PHP 7.3(Windows)安装上进行的,只是我必须更改
<?php; }
到
<?php }
, 但这可能只是问题中的一个拼写错误……)