【问题标题】:PHP Error Only on Windows Server仅在 Windows 服务器上的 PHP 错误
【发布时间】:2012-10-14 02:14:08
【问题描述】:

我不知道从哪里开始修复这个问题。我有一个带有 Ubuntu 和 Windows 的双启动服务器。在 Ubuntu 中,一切正常,但在 Windows(使用 WAMP)中,我的一些网站上出现神秘的 PHP 错误,而其他网站(使用 PHP)运行正常。

Ubuntu screenshot http://newplayproject.org/wp-content/uploads/2012/10/screenshot-windows.jpg

因为它在 Ubuntu 中运行良好,我猜我的代码实际上没有错误,但我在 Windows 上缺少一些 PHP 模块。有什么想法吗?

针对其中一位cmets,以下是“loop-blog.php”的内容:

<?php
global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
}
?>
<?php get_header(); ?>
<? if ($xs_enable_static_feature == "false") { ?>
    <? } else { ?>
    <img src="<?php header_image(); ?>" alt="Static Image" class="static-image" width="880" height="280" title="Static Image" />
<? } ?>
    <? if ($xs_disable_slider== "true") { ?>
    <? } else { ?>
        <?php get_template_part( 'nivoslider' ) ?> 
<? } ?>
    <div id="main">
<h1>Latest Posts</h1>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id(), 'large'); ?>
            <div class="post">
                <div class="postcontent">
            <?
            // Checks To See If, Thumbnails Are Disabled
            if ($xs_disable_thumbnails_archieve == "true") { ?>
            <?
            //If Not Disabled, Show Thumbnails
            } else { ?>
            <div class="postimg">
                    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php bloginfo('template_directory'); ?>/functions/timthumb.php?src=<?php 
                    if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) {
                        echo $thumbnail[0]; 
                    } else {
                        $postimage = get_post_meta($post->ID, 'post-image', true);
                        if ($postimage) {
                            echo $postimage;
                        } else {
                            echo catch_that_image();
                        }
                    }
                    ?>&amp;h=<?php echo $xs_thumbnail_height ?>&amp;w=<?php echo $xs_thumbnail_width ?>&amp;s=1" width="<?php echo $xs_thumbnail_width ?>" height="<?php echo $xs_thumbnail_height ?>" alt="<?php the_title(); ?>" /></a>
            </div><!-- /postimg -->  
            <? } ?>
            <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
        <?php the_excerpt(); ?>
        </div><!-- End Post Content -->
                </div><!-- End Post -->
<?php endwhile; ?>
<?php endif; ?>
        <?php
            //Check For the Page Navi Plugin
            if (function_exists('wp_pagenavi')) {
                wp_pagenavi();
            //Show Default Navigation if Page Navi Is Not Installed
            } else { ?>
                <div class="paginate">
                    <div class="paginate-left"><?php previous_posts_link('Newer Posts') ?></div>
                    <div class="paginate-right"><?php next_posts_link('Older Posts') ?></div>
                </div><!-- /paginate -->
            <? } ?>
</div><!-- End Main -->     
<?php get_sidebar(); ?> 
<?php get_footer(); ?>

【问题讨论】:

  • 您需要发布代码和遇到的错误,而不仅仅是屏幕截图。
  • 请发布loop-blog.php的内容。
  • 可能不是因为文件在那里结束。 :) 必须有一个左括号或 before line 62.
  • 哦,你是对的,反正我只是个聪明人。
  • 将其编辑到您的问题中。并在您使用它时删除工作屏幕截图,那个没有帮助。

标签: php parsing syntax-error wamp lamp


【解决方案1】:

我的猜测是您没有在 Windows 上启用 short_open_tag,因此缺少一些 PHP 块。

如果short_open_tag 已打开,请检查phpinfo() 的输出。如果不是,请在您的 php.ini 文件中启用它。

【讨论】:

  • 太棒了!这完全解决了我的一个网站的问题。我猜肯定还有其他一些 PHP 块需要启用,因为在另一个站点上我仍然收到此错误:注意:未定义变量:第 17 行 [path] 中的描述调用堆栈#TimeMemoryFunctionLocation 10.0004366672{main }( )[path]:0 20.0007369056include( '[path]' )..[path]:3 30.0009373008include('[path]' )..[path]:2 " />
  • 这可能是因为在 Ubuntu 服务器上,error_reporting 设置为 E_ALL &amp; ~E_NOTICE,而在您的 Windows 安装中,&amp; ~E_NOTICE 部分缺失。
  • 太好了,修复了更多错误!虽然我仍然遇到另一个问题,但它只出现在 Windows 中:“警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在第 12 行的 [path] 中给出”。有什么想法吗?
  • 好吧,更多的猜测。 ;) 要么根本无法建立数据库连接(例如密码错误),要么查询中存在语法错误(如果它在其他地方工作则不太可能),或者系统上的数据结构与服务器上的数据结构不同。在参数之前查找mysql_query()echo。然后针对您的数据库运行该查询。
【解决方案2】:

看看这个部分:

<?php
    //Check For the Page Navi Plugin
    if (function_exists('wp_pagenavi')) {
        wp_pagenavi();
    //Show Default Navigation if Page Navi Is Not Installed
    } else { ?>
        <div class="paginate">
            <div class="paginate-left"><?php previous_posts_link('Newer Posts') ?></div>
            <div class="paginate-right"><?php next_posts_link('Older Posts') ?></div>
        </div><!-- /paginate -->
    <? } ?>

您似乎没有平衡的&lt;?php?&gt; PHP 标签。

不确定,但肯定需要检查。

如果可能的话,一定要避免使用(过时的、与 XML 不兼容的)&lt;? ... ?&gt;“短标签”形式。这绝对是不是你想在未来使用的东西。

恕我直言...

【讨论】:

  • 这是真的,但我注意到 &lt;?= 表单回显是 PHP 完全支持的,不受 short_tags 配置选项的影响。
  • 我认为在 PHP 5.4 之前不是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多