Page MenuHomePhabricator

Underscore in extension name leads to LICENSE.txt not being displayed.
Open, Needs TriagePublic

Description

This is a full step-by-step instruction to reproduce the problem. It is not intended to be a safe installation and should not be used on a production system or computer with sensitive information on it. There is some steps that don't need root permissions and the use of sudo is generally a better idea then using the root user. However the focus is on providing a minimal amount of steps to reproduce the issue.

  1. Set up a server: Start with a vanilla CentOS 7.4. Login as root.
  2. Update server: Run
yum -y upgrade

to update all packages.

  1. Install webserver: Run
yum -y install httpd mariadb-server mariadb
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation

and follow the instructions to set a root password and remove anonymous users of the MySQL server. Now upgrade to MariaDB 10.2 by following the instructions here: Use vi /etc/yum.repos.d/mariadb-10.2.repo to create a new file. Press i to enter insert mode and paste the following text:

# MariaDB 10.2 CentOS repository list - created 2017-07-26 11:13 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Press the Esc key to leave the insert mode and save the changes by entering :wq and then pressing return. Next run the following commands:

systemctl stop mariadb.service
yum -y update
systemctl start mariadb.service
mysql_upgrade  --user='root' --password
yum -y install epel-release
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php71
yum -y install php php-opcache php-mysql

Use vi to edit /etc/php.ini and change the line ;date.timezone = to date.timezone = "Europe/Berlin". Finally run

systemctl enable httpd.service
systemctl start httpd.service
  1. Install MediaWiki 1.30.0: Run
yum -y install texlive php-mbstring php-xml
systemctl restart httpd.service
mkdir ~/software
curl -L -o ~/software/mediawiki-latest.tar.gz https://releases.wikimedia.org/mediawiki/1.30/mediawiki-1.30.0.tar.gz
tar -xzf ~/software/mediawiki-latest.tar.gz -C ~/software/
cp -r ~/software/mediawiki-1.30.0/* /var/www/html/
chown -R apache:apache /var/www/html/images
chcon -t httpd_sys_rw_content_t /var/www/html/images
mysql --user='root' --password -e "CREATE DATABASE IF NOT EXISTS wikidb CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON wikidb.* TO 'wikiuser'@'localhost' IDENTIFIED BY 'wikipass'; FLUSH PRIVILEGES;"

Now open a web browser and go to http://example.com/mw-config/index.php (replace example.com by the IP address or FQDN of your server). Select en - English as language of the wiki and installer and click the button Continue->. Read the copyright and terms carefully and and click the button Continue->. Change the field Database name: from my_wiki to wikidb, Database username: from root to wikiuser, enter wikipass into the input field Database password: and click the button Continue-> twice. Then enter TestWiki in the input field under Name of wiki:, choose a usename, password and e-mail address for the administrator account, choose the radio button I'm bored already, just install the wiki. and click the button Continue-> three times. If the download of the file LocalSettings.php did not start automatically, click the link to download the file and open it. Copy all of its contents to the clipboard and run vi /var/www/html/LocalSettings.php on the server. Enter the insert mode and paste the content. Leave the insert mode, save and close the file.

  1. Create a new extension: Run
mkdir /var/www/html/extensions/Disobey_the_camel_case
mkdir /var/www/html/extensions/Disobey_the_camel_case/i18n

Similarly to the creation of the files mariadb-10.2.repo and LocalSettings.php create the following files with their respective contents using vi

vi /var/www/html/extensions/Disobey_the_camel_case/extension.json:

{
    "name": "Disobey_the_camel_case",
    "type": "other",
    "version": "1.0.0",
    "license-name": "MIT",
    "descriptionmsg": "disobeythecamelcase-desc",
    "requires": {
		"MediaWiki": ">= 1.27.0",
		"extensions": {
		}
    },
    "MessagesDirs": {
		"Disobey_the_camel_case": [
			"i18n"
		]
    },
    "manifest_version": 1
}

vi /var/www/html/extensions/Disobey_the_camel_case/i18n/en.json:

{
    "disobeythecamelcase-desc": "This extension only demonstrates a bug."
}

vi /var/www/html/extensions/Disobey_the_camel_case/i18n/qqq.json:

{
    "disobeythecamelcase-desc": "Description of the extension on the Special:Version page."
}

vi /var/www/html/extensions/Disobey_the_camel_case/LICENSE.txt:

Hello world!

Finally use vi /var/www/html/LocalSettings.php to append the line wfLoadExtension( 'Disobey_the_camel_case' ); to the LocalSettings.php.

Observed behaviour
When you use a browser to navigate to http://example.com/index.php/Special:Version (replace example.com by the IP address or FQDN of your server) you see the extension Disobey_the_camel_case being listed in the section Installed extensions. When you click on MIT in the column License, you get to the page http://example.com/index.php/Special:Version/License/Disobey_the_camel_case. On that page there is a headline License for Disobey the camel case. Under that headline there is the sentence No detailed license information was found for this extension..

Expected behaviour
When you use a browser to navigate to http://example.com/index.php/Special:Version (replace example.com by the IP address or FQDN of your server) you see the extension Disobey_the_camel_case being listed in the section Installed extensions. When you click on MIT in the column License, you get to the page http://example.com/index.php/Special:Version/License/Disobey_the_camel_case. On that page there is a headline License for "Disobey_the_camel_case". Under that headline there is a grey box showing Hello world! in a monospace font.

Additional information
When you rename the extension so that it does not contain underscores. I.e. to DisobeyTheCamelCase the expected behavior is observed. This should either be fixed or extension names containing underscores should be treated in a different way (i.e. being ignored or produce a warning or error in the log file the extension might cause unexpected behavior due to underscores in its name).

Event Timeline

Aklapper changed the task status from Open to Stalled.Apr 26 2018, 11:05 AM

Hi @Alphanoob1337, thanks for taking the time to report this and welcome to Phabricator!
Unfortunately this report lacks some information. If you have time and can still reproduce the problem: Please add a more complete description to this report.
That should be a clear list of specific steps to reproduce the situation, click by click, as little details sometimes matter, so that nobody needs to guess how you performed each step, and describing actual results and expected results after performing the steps to reproduce, plus exact MediaWiki version information (if it is not on a Wikimedia wiki), etc.
You can edit the task description by clicking Edit Task.
Ideally, exact and clear steps to reproduce should allow any other person to follow these steps (without having to interpret those steps) and see the same results. Problems that others can reliably reproduce can get fixed faster. Thanks!

Thanks a lot for the very detailed steps! How to install MediaWiki would not have been necessary but the rest is helpful!

Aklapper changed the task status from Stalled to Open.May 2 2018, 10:14 AM
Vvjjkkii renamed this task from Underscore in extension name leads to LICENSE.txt not being displayed. to g8daaaaaaa.Jul 1 2018, 1:13 AM
Vvjjkkii triaged this task as High priority.
Vvjjkkii updated the task description. (Show Details)
Vvjjkkii removed a subscriber: Aklapper.
1339861mzb renamed this task from g8daaaaaaa to Underscore in extension name leads to LICENSE.txt not being displayed. .Jul 1 2018, 10:45 AM
1339861mzb updated the task description. (Show Details)
1339861mzb updated the task description. (Show Details)