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:
- Downgrade your PHP from 5.3 back to 5.2
- Upgrade your MediaWiki to a newer version.
- Fix the codes.
In my case, the first couple solutions do not work for me, and therefore I choose 3.
- Backup your wiki file first.
- Access your webserver and go to the MediaWiki/includes directory.
For example:cd /usr/local/www/apache22/data/wiki/includes
- Edit Namespace.php
nano Namespace.php
- Go to line 46, change the following from:
class Namespace {
to:
class MWNamespace {
Save the file.
- 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.
- Change the file to executable by:
chmod u+x wikifix.sh
- Search the keyword Namespace:: and replace it by MWNamespace:::
./wikifix.sh
Warning: Don’t run the script twice!
- Delete the script.
rm wikifix.sh
Try to access the MediaWiki again and the problem should be gone.
Enjoy Wiki.
–Derrick
Our sponsors:
Thanks. It worked.
In any case it’s not wise to use a variable name that is possible to become a reserved word.
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.
worked with me like a charm!
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
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
Too quick to post that comment … solved it by adding MW to the Namespace as below:
if( ( $ns = MWNamespace::getCanonicalIndex( $lctext ) ) !== null ) return $ns;
Great solution solved error on Mediawiki 1.9.3
It is worth to say that this excellent bash script should be launched in the /includes/filerepo/ folder as well