我不断收到这个错误,当我在一个LEMP设置Nginx的1.10 / PHP 7,我以为这是因为PHP 7,现在我设置一个新的服务器与Nginx 1.4.6 / PHP 5.5.9
2016/06/19 15:45:18 [error] 4094#0: *1 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected end of file in /var/www/www.example.com/public/wp-content/themes/techs/functions.php on line 141" while reading response header from upstream, client: 10.0.0.11, server: www.example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com"
现在是造成这个错误的文件是在这里,我注意到,行是空的最后一行,我试图删除该行,但不会被删除。 任何人都可以指出是什么导致这个错误?
nano /var/www/www.example.com/public/wp-content/themes/techs/functions.php
第141行是结束标记之后/之下的空行; 每一次尝试删除该行失败
<?php if ( function_exists( 'add_theme_support' ) ) { // Added in 2.9 add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 75, 56, true ); // Normal post thumbnails add_image_size( 'single-post-thumbnail', 273, 273 ); // Permalink thumbnail size } /*register_sidebar(array( 'name'=>'sidebar', 'before_widget' => '<li id="%1$s" class="widget %2$s">', 'after_widget' => '</li>', 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>', )); */ # Displays a list of popular posts function gtt_popular_posts($num, $pre='<li>', $suf='</li>', $excerpt=true) { global $wpdb; $querystr = "SELECT $wpdb->posts.post_title,$wpdb->posts.post_date_gmt, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' ORDER BY $wpdb->posts.comment_count DESC LIMIT $num"; $myposts = $wpdb->get_results($querystr, OBJECT); foreach($myposts as $post) { echo $pre; ?><div class="fpimg"> <img src="<?php get_post_thumbnail($post->ID); ?>" /> </div> <div class="fpost"> <a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title ?></a><br /> <?php if (function_exists('time_since')) {echo time_since(abs(strtotime($post->post_date_gmt . " GMT")), time()) . " ago";} else {the_time('F jS, Y');} ?> </div> <?php echo $suf; } } function get_recent_posts($num) { $recent_posts = wp_get_recent_posts($num); foreach($recent_posts as $post){ ?> <li><div class="fpimg"> <?php echo '<a href="' . get_permalink($post["ID"]) . '" title="Look '.$post["post_title"].'" >'; ?> <img src="<?php get_post_thumbnail($post["ID"]); ?>" /> </div> <div class="fpost"> <?php echo '<a href="' . get_permalink($post["ID"]) . '" title="Look '.$post["post_title"].'" >' . $post["post_title"].'</a> ';?> <br /> <?php if (function_exists('time_since')) {echo time_since(abs(strtotime($post["post_date_gmt"] . " GMT")), time()) . " ago";} else {the_time('F jS, Y');} ?> </div> </li> <? } } function time_since($older_date, $newer_date = false) { // array of time period chunks $chunks = array( array(60 * 60 * 24 * 365 , 'year'), array(60 * 60 * 24 * 30 , 'month'), array(60 * 60 * 24 * 7, 'week'), array(60 * 60 * 24 , 'day'), array(60 * 60 , 'hour'), array(60 , 'minute'), ); // $newer_date will equal false if we want to know the time elapsed between a date and the current time // $newer_date will have a value if we want to work out time elapsed between two known dates $newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date; // difference in seconds $since = $newer_date - $older_date; // we only want to output two chunks of time here, eg: // x years, xx months // x days, xx hours // so there's only two bits of calculation below: // step one: the first chunk for ($i = 0, $j = count($chunks); $i < $j; $i++) { $seconds = $chunks[$i][0]; $name = $chunks[$i][1]; // finding the biggest chunk (if the chunk fits, break) if (($count = floor($since / $seconds)) != 0) { break; } } // set output var $output = ($count == 1) ? '1 '.$name : "$count {$name}s"; // step two: the second chunk if ($i + 1 < $j) { $seconds2 = $chunks[$i + 1][0]; $name2 = $chunks[$i + 1][1]; if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) { // add to output var $output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s"; } } return $output; } function get_post_thumbnail($pid) { $files = get_children('post_parent='.$pid.'&post_type=attachment&post_mime_type=image'); if($files) : $keys = array_reverse(array_keys($files)); $j=0; $num = $keys[$j]; $image=wp_get_attachment_image($num, 'large', false); $imagepieces = explode('"', $image); $imagepath = $imagepieces[1]; $thumb=wp_get_attachment_thumb_url($num); print $thumb; else: echo bloginfo('template_directory')."/images/smallimg.jpg"; endif; } function get_post_thumbnails() { $files = get_children('post_parent='.get_the_ID().'&post_type=attachment&post_mime_type=image'); if($files) : $keys = array_reverse(array_keys($files)); $j=0; $num = $keys[$j]; $image=wp_get_attachment_image($num, 'large', false); $imagepieces = explode('"', $image); $imagepath = $imagepieces[1]; $thumb=wp_get_attachment_thumb_url($num); print $thumb; else: echo bloginfo('template_directory')."/images/smallimg.jpg"; endif; } ?>
你的问题显然是短打开标签<? 靠近get_recent_posts()函数的末尾。
将其更改为<?php ,该问题将消失。
下次你有编程错误,请参考http://stackoverflow.com 。
好的,这是我做的,错误消失了
编辑php.ini文件
nano /etc/php5/fpm/php.ini
并且做了这个改变,基本上从关到改
;short_open_tag = Off short_open_tag = On
而不是想知道如何解决这个错误
谢谢
更新:这只适用于PHP 5.5.9,但不适用于PHP 7.0.4所以还是想解决它的更好的方法