MediaWiki Error: “Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /usr/local/www/apache22/data/wiki/includes/Namespace.php on line 46”


After upgrading my PHP to 5.3.2, I received the following error when accessing MediaWiki (1.6.12):

Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /usr/local/www/apache22/data/wiki/includes/Namespace.php  on line 46

There are three solutions:

  1. Downgrade your PHP from 5.3 back to 5.2
  2. Upgrade your MediaWiki to a newer version.
  3. Fix the codes.

In my case, the first couple solutions do not work for me, and therefore I choose 3.

  1. Backup your wiki file first.
  2. Access your webserver and go to the MediaWiki/includes directory.
    For example:

    cd /usr/local/www/apache22/data/wiki/includes
  3. Edit Namespace.php
    nano Namespace.php
  4. Go to line 46, change the following from:
    class Namespace {

    to:

    class MWNamespace {

    Save the file.

  5. Now, let’s create a script:
    nano wikifix.sh

    Copy and paste the following:

    for fl in *.php; do
    mv $fl $fl.old
    sed 's/Namespace::/MWNamespace::/g' $fl.old > $fl
    done

    Save the file.

  6. Change the file to executable by:
    chmod u+x wikifix.sh
  7. Search the keyword Namespace:: and replace it by MWNamespace:::
    ./wikifix.sh

    Warning: Don’t run the script twice!

  8. Delete the script.
    rm wikifix.sh

Try to access the MediaWiki again and the problem should be gone.

Enjoy Wiki.

–Derrick

Our sponsors:

64 Replies to “MediaWiki Error: “Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in /usr/local/www/apache22/data/wiki/includes/Namespace.php on line 46””

  1. Andy

    Worked like a charm – thanks! I did the manual find-and-replace using Notepad++ rather than the script, but worked just as well once I found the language.php file needed to be updated too.

    Reply
  2. Nuno Leitao

    Thanks a lot!!

    I’d like to sugest a better fix:

    for file in `grep -R Namespace:: * | awk -F”:” ‘{ print $1 }’ | sort | uniq ` ; do sed -i ‘s/Namespace::/MWNamespace::/g’ ./$file ; done

    Best regards
    Nuno

    Reply
  3. Senthil

    I get a different error now!

    PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting T_NS_SEPARATOR in /usr/share/mediawiki1.10/languages/Language.php on line 254

    Reply
  4. Senthil

    Too quick to post that comment … solved it by adding MW to the Namespace as below:

    if( ( $ns = MWNamespace::getCanonicalIndex( $lctext ) ) !== null ) return $ns;

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *