Not able to install Wordpress blog

Discussion in 'Third-party applications' started by micheldegroot, Feb 14, 2008.

Thread Status:
Threads that have been inactive for 5 years or longer are closed to further replies. Please start a new thread.
  1. Hi all
    I try to set up a wordpress blog onto my DiscountASP account. For this I opted for the MySQL database. When I try to go to the install.php page I get the following error message: CGI Error
    The specified CGI application misbehaved by not returning a complete set of HTTP headers.

    Before running the install I have to make a config.php file to connect to the database. I am 100% sure that I filled in the right data in that file (if it's wrong I get another message that says cannot connect to database) but here is the content ot the config page anyway:

    <?php
    // ** MySQL settings ** //
    define('DB_NAME', 'MYSQLDB_342440'); // The name of the database
    define('DB_USER', 'USERNAME'); // Your MySQL username
    define('DB_PASSWORD', 'PASSWORD'); // ...and password
    define('DB_HOST', 'mysql01.discountasp.net'); // 99% chance you won't need to change this value
    define('DB_CHARSET', 'utf8');
    define('DB_COLLATE', '');

    // You can have multiple installations in one database if you give each a unique prefix
    $table_prefix = 'wp_'; // Only numbers, letters, and underscores please!

    // Change this to localize WordPress. A corresponding MO file for the
    // chosen language must be installed to wp-content/languages.
    // For example, install de.mo to wp-content/languages and set WPLANG to 'de'
    // to enable German language support.
    define ('WPLANG', '');

    define('ABSPATH', dirname(__FILE__).'/');
    require_once(ABSPATH.'wp-settings.php');
    ?>

    I hope that someone is able to help me out with this.

    Greeting,
    Michel de Groot
     
  2. I'm not sure you'll find a PHP developer here to help with that, most of us are SQL Server/ASP.NET devs...
    But a good friend of mine runs this site: http://aigamedev.com/
    With Wordpress. (I've written some of the game code articles there.)
    Contact Alex and tell him Mark sent you over, see if he has any tips. [​IMG]
    Salute,
    Mark Wisecarver
     
  3. Bruce

    Bruce DiscountASP.NET Staff

    I have tested installing wordpress and had no problem.


    Do you know what the error is?


    Bruce

    DiscountASP.NET
    www.DiscountASP.NET
     
  4. Hi Mark and Bruce

    Thanks for replying.

    I did not change the username or password of the database. But I have done some googling on the CGI error message and read that the problem might be in the PHP / ISS server / MySQL combination. But since you (Bruce) have succesfully tried to setup Wordpress on discoountASP I am not sure if that really is the problem. I tried the same Wordpress setup on other hosts and all works fine without any difficulties.

    Some days ago I did a setup of Wordpress and all seemed to work fine. While working on some theme modification apparantly something wrong since I lost accesibilty to some parts of the blog. I decided to re-install wordpress but that was only possible by clearing the MySQL database. I ask the supportdepartment of DiscountASP to do that for me since I am not able to do that myself in the control panel. So they did. But since then nothinh worked anymore. Did several clean installs. Deleted all the website files and wordpress files and put fresh ones back on but that did not solf the problem.

    After re-uploading the Wordpress map onto the server first the wp_config.php file must be made for database connection. This part works and I double checked all the data to be filled in like DB_name, Username, DB location, etc. Then i am being redirected to the install page and that is when I get the CGI error message. So I cannot even install Wordpress. I have tried all ways to get to the install page (and other pages) but all give the same error message...

    F.Y.I. I am using MySQL and not SQL200 or SQL 2005 on DiscountASP. I don't know if that might make a difference...
     
  5. Problem solved!!!

    I found out that I had to make change to a certain php page and it worked.

    Here is the solution for anyone who faces the same problem in the future:

    Replce the code of wp-includes/wp-db.php into the code you will find here:http://wordpress.pastebin.ca/893007

    Thanks guys for your input!!!!


    Best,
    Michel
     
  6. Nice job. [​IMG]
     
  7. Bruce

    Bruce DiscountASP.NET Staff

    Interesting.. i don't remember that I have to update any code when i tested it. May be the version was different.

    Bruce

    DiscountASP.NET
    www.DiscountASP.NET
     
  8. Hi Bruce

    Indeed it depends on the version. The first time I installed it Wordpress (and it worked)it was an older 2.2 version. I screwed up some php pages and reinstalled Wordpress but a newer version 2.3 and that one was not immediatly compatible with the IIS server. I had to make some adjustments in a few php pages to make it work.

    Michel
     
  9. Update to previous post...


    I have successfully installed version 2.3.1. Apparently, anything higher will not work without those changes which are still missing from the Wordpress site.


    vanyoos
     
  10. Thank you much! I'll try it when I upgrade to the latest version.

    vanyoos
     
  11. Hi

    I can't trace the link either but here is the conde copied from my wp-db.php page. You can try it and see if it works for you.

    Here it is:

    <?php
    // WordPress DB Class

    // ORIGINAL CODE FROM:
    // Justin Vincent ([email protected])
    // http://php.justinvincent.com

    define('EZSQL_VERSION', 'WP1.25');
    define('OBJECT', 'OBJECT', true);
    define('ARRAY_A', 'ARRAY_A', false);
    define('ARRAY_N', 'ARRAY_N', false);

    if (!defined('SAVEQUERIES'))
    define('SAVEQUERIES', false);

    class wpdb {

    var $show_errors = true;
    var $num_queries = 0;
    var $last_query;
    var $col_info;
    var $queries;

    // Our tables
    var $posts;
    var $users;
    var $categories;
    var $post2cat;
    var $comments;
    var $links;
    var $options;
    var $optiontypes;
    var $optionvalues;
    var $optiongroups;
    var $optiongroup_options;
    var $postmeta;
    var $usermeta;
    var $terms;
    var $term_taxonomy;
    var $term_relationships;

    var $charset;
    var $collate;

    /**
    * Connects to the database server and selects a database
    * @param string $dbuser
    * @param string $dbpassword
    * @param string $dbname
    * @param string $dbhost
    */
    function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
    return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost);
    }

    function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
    register_shutdown_function(array(&$this, '__destruct'));

    if ( defined('DB_CHARSET') )
    $this->charset = DB_CHARSET;

    if ( defined('DB_COLLATE') )
    $this->collate = DB_COLLATE;

    $this->dbuser = $dbuser;
    $this->dbpassword = $dbpassword;
    $this->dbname = $dbname;
    $this->dbhost = $dbhost;

    $this->connecttodb();
    }

    function connecttodb()
    {

    $this->dbh = @mysql_connect($this->dbhost, $this->dbuser, $this->dbpassword, true);
    if (!$this->dbh) {
    $this->bail('
    <h1>Error establishing a database connection</h1>
    This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>$dbhost</code>. This could mean your host's database server is down.

    <ul>
    <li>Are you sure you have the correct username and password?</li>
    <li>Are you sure that you have typed the correct hostname?</li>
    <li>Are you sure that the database server is running?</li>
    </ul>
    If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.

    ');
    }

    if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
    $this->query('SET NAMES '$this->charset'');

    $this->select($this->dbname);
    }

    function checkconnection()
    {
    $maxcount = 5;
    $cnt = 1;

    $ping = mysql_ping( $this->dbh ) ;

    while( !$ping && $cnt < $maxcount)
    {
    @mysql_close($this->dbh);
    $this->connecttodb();

    $ping = mysql_ping( $this->dbh ) ;

    if(!$ping )
    {
    sleep(2);
    }
    $cnt+=1;
    }

    if(!$ping ) { die('Attempted to connect for ' . $maxcount . ' but failed...') ; }

    }

    function __destruct() {
    return true;
    }

    /**
    * Selects a database using the current class's $this->dbh
    * @param string $db name
    */
    function select($db) {
    if (!@mysql_select_db($db, $this->dbh)) {
    $this->bail('
    <h1>CanÕt select database</h1>
    We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>$db</code> database.

    <ul>
    <li>Are you sure it exists?</li>
    <li>On some systems the name of your database is prefixed with your username, so it would be like username_wordpress. Could that be the problem?</li>
    </ul>
    If you don't know how to setup a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.
    ');
    }
    }

    /**
    * Escapes content for insertion into the database, for security
    *
    * @param string $string
    * @return string query safe string
    */
    function escape($string) {
    return addslashes( $string ); // Disable rest for now, causing problems
    if( !$this->dbh || version_compare( phpversion(), '4.3.0' ) == '-1' )
    return mysql_escape_string( $string );
    else
    return mysql_real_escape_string( $string, $this->dbh );
    }

    /**
    * Escapes content by reference for insertion into the database, for security
    * @param string $s
    */
    function escape_by_ref(&$s) {
    $s = $this->escape($s);
    }

    /**
    * Prepares a SQL query for safe use, using sprintf() syntax
    */
    function prepare($args=NULL) {
    if ( NULL === $args )
    return;
    $args = func_get_args();
    $query = array_shift($args);
    $query = str_replace(''%s'', '%s', $query); // in case someone mistakenly already singlequoted it
    $query = str_replace(''%s'', '%s', $query); // doublequote unquoting
    $query = str_replace('%s', ''%s'', $query); // quote the strings
    array_walk($args, array(&$this, 'escape_by_ref'));
    return @vsprintf($query, $args);
    }

    // ==================================================================
    // Print SQL/DB error.

    function print_error($str = '') {
    global $EZSQL_ERROR;
    if (!$str) $str = mysql_error($this->dbh);
    $EZSQL_ERROR[] =
    array ('query' => $this->last_query, 'error_str' => $str);

    $str = htmlspecialchars($str, ENT_QUOTES);
    $query = htmlspecialchars($this->last_query, ENT_QUOTES);
    // Is error output turned on or not..
    if ( $this->show_errors ) {
    // If there is an error then take note of it
    print '<div id='error'>
    <p class='wpdberror'><strong>WordPress database error:</strong> [$str]
    <code>$query</code>

    </div>';
    } else {
    return false;
    }
    }

    // ==================================================================
    // Turn error handling on or off..

    function show_errors() {
    $this->show_errors = true;
    }

    function hide_errors() {
    $this->show_errors = false;
    }

    // ==================================================================
    // Kill cached query results

    function flush() {
    $this->last_result = array();
    $this->col_info = null;
    $this->last_query = null;
    }

    // ==================================================================
    // Basic Query - see docs for more detail

    function query($query) {
    // filter the query, if filters are available
    // NOTE: some queries are made before the plugins have been loaded, and thus cannot be filtered with this method

    $this->checkconnection();

    if ( function_exists('apply_filters') )
    $query = apply_filters('query', $query);

    // initialise return
    $return_val = 0;
    $this->flush();

    // Log how the function was called
    $this->func_call = '\$db->query(\'$query\')';

    // Keep track of the last query for debug..
    $this->last_query = $query;

    // Perform the query via std mysql_query function..
    if (SAVEQUERIES)
    $this->timer_start();

    $this->result = @mysql_query($query, $this->dbh);
    ++$this->num_queries;

    if (SAVEQUERIES)
    $this->queries[] = array( $query, $this->timer_stop() );

    // If there is an error then take note of it..
    if ( mysql_error($this->dbh) ) {
    $this->print_error();
    return false;
    }

    if ( preg_match('/^\\s*(insert|delete|update|replace) /i',$query) ) {
    $this->rows_affected = mysql_affected_rows($this->dbh);
    // Take note of the insert_id
    if ( preg_match('/^\\s*(insert|replace) /i',$query) ) {
    $this->insert_id = mysql_insert_id($this->dbh);
    }
    // Return number of rows affected
    $return_val = $this->rows_affected;
    } else {
    $i = 0;
    while ($i < @mysql_num_fields($this->result)) {
    $this->col_info[$i] = @mysql_fetch_field($this->result);
    $i++;
    }
    $num_rows = 0;
    while ( $row = @mysql_fetch_object($this->result) ) {
    $this->last_result[$num_rows] = $row;
    $num_rows++;
    }

    @mysql_free_result($this->result);

    // Log number of rows the query returned
    $this->num_rows = $num_rows;

    // Return number of rows selected
    $return_val = $this->num_rows;
    }

    return $return_val;
    }

    /**
    * Get one variable from the database
    * @param string $query (can be null as well, for caching, see codex)
    * @param int $x = 0 row num to return
    * @param int $y = 0 col num to return
    * @return mixed results
    */
    function get_var($query=null, $x = 0, $y = 0) {
    $this->func_call = '\$db->get_var(\'$query\',$x,$y)';
    if ( $query )
    $this->query($query);

    // Extract var out of cached results based x,y vals
    if ( $this->last_result[$y] ) {
    $values = array_values(get_object_vars($this->last_result[$y]));
    }

    // If there is a value return it else return null
    return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
    }

    /**
    * Get one row from the database
    * @param string $query
    * @param string $output ARRAY_A | ARRAY_N | OBJECT
    * @param int $y row num to return
    * @return mixed results
    */
    function get_row($query = null, $output = OBJECT, $y = 0) {
    $this->func_call = '\$db->get_row(\'$query\',$output,$y)';
    if ( $query )
    $this->query($query);
    else
    return null;

    if ( !isset($this->last_result[$y]) )
    return null;

    if ( $output == OBJECT ) {
    return $this->last_result[$y] ? $this->last_result[$y] : null;
    } elseif ( $output == ARRAY_A ) {
    return $this->last_result[$y] ? get_object_vars($this->last_result[$y]) : null;
    } elseif ( $output == ARRAY_N ) {
    return $this->last_result[$y] ? array_values(get_object_vars($this->last_result[$y])) : null;
    } else {
    $this->print_error(' \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N');
    }
    }

    /**
    * Gets one column from the database
    * @param string $query (can be null as well, for caching, see codex)
    * @param int $x col num to return
    * @return array results
    */
    function get_col($query = null , $x = 0) {
    if ( $query )
    $this->query($query);

    $new_array = array();
    // Extract the column values
    for ( $i=0; $i < count($this->last_result); $i++ ) {
    $new_array[$i] = $this->get_var(null, $x, $i);
    }
    return $new_array;
    }

    /**
    * Return an entire result set from the database
    * @param string $query (can also be null to pull from the cache)
    * @param string $output ARRAY_A | ARRAY_N | OBJECT
    * @return mixed results
    */
    function get_results($query = null, $output = OBJECT) {
    $this->func_call = '\$db->get_results(\'$query\', $output)';

    if ( $query )
    $this->query($query);
    else
    return null;

    // Send back array of objects. Each row is an object
    if ( $output == OBJECT ) {
    return $this->last_result;
    } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
    if ( $this->last_result ) {
    $i = 0;
    foreach( $this->last_result as $row ) {
    $new_array[$i] = (array) $row;
    if ( $output == ARRAY_N ) {
    $new_array[$i] = array_values($new_array[$i]);
    }
    $i++;
    }
    return $new_array;
    } else {
    return null;
    }
    }
    }

    /**
    * Grabs column metadata from the last query
    * @param string $info_type one of name, table, def, max_length, not_null, primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill
    * @param int $col_offset 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type
    * @return mixed results
    */
    function get_col_info($info_type = 'name', $col_offset = -1) {
    if ( $this->col_info ) {
    if ( $col_offset == -1 ) {
    $i = 0;
    foreach($this->col_info as $col ) {
    $new_array[$i] = $col->{$info_type};
    $i++;
    }
    return $new_array;
    } else {
    return $this->col_info[$col_offset]->{$info_type};
    }
    }
    }

    /**
    * Starts the timer, for debugging purposes
    */
    function timer_start() {
    $mtime = microtime();
    $mtime = explode(' ', $mtime);
    $this->time_start = $mtime + $mtime[0];
    return true;
    }

    /**
    * Stops the debugging timer
    * @return int total time spent on the query, in milliseconds
    */
    function timer_stop() {
    $mtime = microtime();
    $mtime = explode(' ', $mtime);
    $time_end = $mtime + $mtime[0];
    $time_total = $time_end - $this->time_start;
    return $time_total;
    }

    /**
    * Wraps fatal errors in a nice header and footer and dies.
    * @param string $message
    */
    function bail($message) { // Just wraps errors in a nice header and footer
    if ( !$this->show_errors )
    return false;
    wp_die($message);
    }
    }

    if ( ! isset($wpdb) )
    $wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
    ?>
     
  12. mjp

    mjp

    A test install of the latest version of WordPress - 2.5.1- on an IIS 6 server (we do not support MySQLon IIS 7) worked, though it took a bit of massaging.


    First, I tried using the above code in wp-db.php,but the install errored out:
    PHP Fatal error: Call to undefined function: set_prefix() in E:\web\domainnet00\htdocs\wordpress\wp-settings.php on line 211


    So I restored the deafault wp-db.php, and I could then get to the first install page by going to the index page for WordPress (in this example http://domain.net/wordpress).

    However -the pagewas not using the WordPress theme. There was no formatting and a broken image icon,so obvioulsy something was wrong with the path. When I tried setup from that page anyway, it failed with a "file not found," because after the first step (specifying the blog title and email address) it went on to look for:

    http://domain.net/wordpress/install.php?step=2

    which does not exist.


    So I inserted the correct directory into the path and started over from step=1:

    http://domain.net/wordpress/wp-admin/install.php?step=1

    Once I did that, the theme appeared and setup proceeded fine.


    The blog and admin sections all work, so whatever that initial path error was, I'm assuming it is only in the setup, and not the main blog functions.


    So if you are on an IIS 6 server and you have the MySQL add-on, you should be able to install with that one small tweak: inserting /wp-admin into the path. Just upload the files, make the necessary changes to the config file, and start at:

    http://YourDomain.net/wordpress/wp-admin/install.php?step=1

    If you are installing in the root directory you would leave /wordpress out of that URL, or replace it with whatever you have named the blog directory:


    http://YourDomain.net/wp-admin/install.php?step=1http://YourDomain.net/blog/wp-admin/install.php?step=1











    Etc.




























    mjp
    ---
    DiscountASP.NET

    Post Edited (mjp [DASP]) : 5/2/2008 7:03:54 PM GMT
     
Thread Status:
Threads that have been inactive for 5 years or longer are closed to further replies. Please start a new thread.

Share This Page