【问题标题】:500 internal server error when try to include wp-load.php in codeigniter site尝试在 codeigniter 站点中包含 wp-load.php 时出现 500 内部服务器错误
【发布时间】:2017-02-12 07:15:04
【问题描述】:

我在www.example.com/blog 建立了一个Wordpress 博客,在www.example.com 建立了一个Codeigniter 站点。我正在尝试将博客中的最​​新帖子显示到我的 Codeigniter 网站。为此,我使用

包含了 wp-load.php 文件
require($_SERVER['DOCUMENT_ROOT'] . '/blog/wp-load.php');

   // require_once('../app/blog/wp-load.php');
                         $args = array(
                              // 'cat' => 3, // Only source posts from a specific category
                              'posts_per_page' => 4 // Specify how many posts you'd like to display
                              );
                              $latest_posts = new WP_Query( $args );  
                              if ( $latest_posts->have_posts() ) {
                                while ( $latest_posts->have_posts() ) {
                                $latest_posts->the_post(); ?>
                             <marquee align="top" behavior="scroll" onmouseover="this.stop();" onmouseout="this.start();" direction="up" scrolldelay="200" ><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> 
                            <li>

                              <?php if ( has_post_thumbnail() ) { ?>
                                <span class="post_thumbnail"><?php the_post_thumbnail(); ?></span>
                              <?php } ?>
                              <span class="post_title"><?php the_title(); ?></span>
                            </a>
                            <!--span class="post_time">Posted on <?php the_time('l jS F, Y') ?></span-->
                            <?php //the_excerpt(); ?>
                          </li> 
                          </marquee >
                        <? } 
                            } else {
                            echo '<p>There are no posts available</p>';
                          }
                          wp_reset_postdata(); 
                        ?>

但会引发内部服务器错误。 我必须更改文件权限吗?请帮忙。该网站由 Godaddy 托管。

错误详情:

内部服务器错误

服务器遇到内部错误或配置错误,并且 无法完成您的请求。

请联系服务器管理员告知时间 发生错误以及您可能做过的任何事情 导致错误。

有关此错误的更多信息可能在服务器错误中可用 记录。

【问题讨论】:

    标签: wordpress codeigniter


    【解决方案1】:

    切勿在您的主网站中包含任何 Wordpress 文件,因为这会导致许多错误。相反,使用 Codeigniter 的第二个数据库连接来连接到您的 Wordpress 数据库。 搜索get wordpress posts from database to codeigniter 我发现了这个gistthis article。以下代码摘自这篇文章。请注意,此代码适用于 Codeigniter 2,并且未经测试。但是我之前在Codeigniter中处理过很多数据库,有什么问题就问吧。

    一个。在您的 application/config/database.php 文件中添加不同的设置数据以及您的主要网站数据库设置:

    $db['wordpress']['hostname'] = "wordpress_db_host"; // database host
    $db['wordpress']['username'] = "wordpress_db_username"; // db user name
    $db['wordpress']['password'] = "wordpress_db_password"; // db user password
    $db['wordpress']['database'] = "wordpress_db"; // database name
    

    b.在application/models/wordpress_model.php中构建一个Wordpress模型:

    <?php if (!defined('BASEPATH')) die ('No direct script access allowed!');
    
    class Wordpress_Model extends CI_Model
    {
        function getPosts()
        {
            $this->load->database('wordpress', TRUE); // load database
    
            // get the wordpress posts, customize it as you like
            $this->wordpress->select("post_id, post_title, post_content");
            $this->wordpress->from('post_tbl');
            $this->wordpress->limit(5);
            $query = $this->wordpress->get();
            $data['posts'] = $query->result();
    
            $this->load->view('wordpress_posts_view', $data); // load the view file , we are passing $data array to view file
        }
    }
    

    c.在application/views/wordpress_posts_view.php中创建视图文件:

    <h4>Display Records From Database Using Codeigniter</h4>
    <table>
        <tr>
            <td><strong>Post Id</strong></td>
            <td><strong>Post Title</strong></td>
        </tr>
        <?php foreach($posts as $post){?>
            <tr>
                <td><?php echo $post->post_id;?></td>
                <td><?php echo $post->post_title;?></td>
            </tr>    
        <?php }?>  
    </table>
    

    d.现在,您可以在任何 Codeigniter 控制器中调用所有这些:

    <?php if (!defined('BASEPATH')) die ('No direct script access allowed!');
    
    class Homepage extends CI_Controller
    {
        public function index()
        {
            $this->load->model('wordpress_model');
    
            $data['wordpress_html_posts'] = $this->wordpress_model->getPosts();
            print_r($data['wordpress_html_posts']);
        }
    }
    

    【讨论】:

    • 感谢您的回答,但它仍然引发内部服务器错误,我无法找到我做错了什么?还是godaddy的问题?
    • 您的主网站www.example.com 和博客www.example.com/blog 是否可以在不更改代码的情况下独立运行?
    • 是的。每当我尝试包含来自另一个应用程序或文件夹的任何文件时,它都会引发错误
    • 所以,您是说主网站(使用 codeigniter)无需修改即可工作,当您包含我上面发布的模型时,您会收到错误消息吗?这似乎不太可能。
    • 即使我做了修改,主网站也能正常工作,它只会为该控制器抛出错误:www.example.com/wordpress
    猜你喜欢
    • 2018-09-03
    • 2018-05-11
    • 2013-03-09
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多