PHPackages                             magirc/magirc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. magirc/magirc

ActiveProject[Utility &amp; Helpers](/categories/utility)

magirc/magirc
=============

MagIRC - Let the magirc begin!

v1.7.1(5y ago)381.1k15[13 issues](https://github.com/h9k/magirc/issues)GPL-3.0-or-laterPHPPHP &gt;=5.6.0

Since Apr 9Pushed 5y ago11 watchersCompare

[ Source](https://github.com/h9k/magirc)[ Packagist](https://packagist.org/packages/magirc/magirc)[ Docs](https://h9k.github.io/magirc)[ RSS](/packages/magirc-magirc/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (7)Versions (11)Used By (0)

MagIRC
======

[](#magirc)

Thank you for your interest in MagIRC, a PHP-based Web Frontend for IRC Services released under the GPLv3 license.

This software is a complete rewrite of phpDenora, a PHP-based Web Frontend for the [Denora Stats](https://github.com/denora/denora) project.

Meanwhile, MagIRC also works with [Anope](https://www.anope.org/) 2.0, which supersedes Denora. We recommend using Anope, since it is being actively maintained and has improved performance and stability over Denora. In case you want to migrate from Denora to Anope, we created a script for this task (see below).

### Main features

[](#main-features)

- REST service
- [Twig](https://twig.sensiolabs.org) templating engine
- [jQuery](https://www.jquery.com/)-based UI with AJAX interactions
- HTML5 and CSS3
- Easy installation
- Administration panel
- Slick design

### Requirements

[](#requirements)

- Web Server with PHP 5.6+ and the `pdo_mysql`, `gettext` and `xml` extensions installed
- Web Browser supporting HTML5, CSS3 and JavaScript
- Any of the following:
    - [Denora Stats](https://github.com/denora/denora) v1.5 server with MySQL enabled
    - [Anope](https://www.anope.org/) v2.0 with the `m_mysql`, `m_chanstats` and `irc2sql` modules enabled
- Supported IRC Daemons: Bahamut, Charybdis, InspIRCd, ircd-rizon, IRCu, Nefarious, Ratbox, ScaryNet, Unreal

Magirc installation / upgrade
-----------------------------

[](#magirc-installation--upgrade)

### Using [composer](https://getcomposer.org) and [yarn](https://yarnpkg.com) (recommended)

[](#using-composer-and-yarn-recommended)

1. Execute the following command:
    - To install:
        - `composer create-project magirc/magirc`
        - `yarn`
    - To update:
        - `composer update`
        - `yarn`
        - Clean up cached pages with `rm -r tmp/*`
2. Use your web browser to navigate to the setup folder on your server and follow on-screen instructions. Example: https://`yourpathtomagirc`/setup/

### Using a release package

[](#using-a-release-package)

1. Download the latest MagIRC release package from [GitHub](https://h9k.github.io/magirc/)
2. Extract the MagIRC archive to your web server and move its content to the MagIRC directory.
3. Use your web browser to navigate to the setup folder on your server and follow on-screen instructions. Example: https://`yourpathtomagirc`/setup/

### Using git

[](#using-git)

You need a git client, [composer](https://getcomposer.org) and [yarn](https://yarnpkg.com)

1. Execute the following commands:
    - To install:
        - `git clone git://github.com/h9k/magirc.git`
        - `composer install`
        - `yarn`
    - To update:
        - `git pull`
        - `composer update`
        - `yarn`
2. Use your web browser to navigate to the setup folder on your server and follow on-screen instructions. Example: https://`yourpathtomagirc`/setup/

Anope configuration
-------------------

[](#anope-configuration)

You need Anope 2.0.0 or later and the following modules enabled and set up:

```
m_mysql
m_chanstats
irc2sql

```

These modules are included in the Anope codebase under `extra`. Please refer to the Anope documentation on how to set those up.

Also, you will need additional database tables, views and stored procedures for the Anope database in order to get the data needed by MagIRC. Please look at the `setup/sql/anope.sql` file and adapt it if needed (table prefixes, etc.) and run it against your Anope database.

Note that you need the MySQL `event_scheduler` set to `ON` in the MySQL server. If you have enough rights, you can turn it on via `SET GLOBAL event_scheduler = ON;`.

If you have access to the server configuration, you can modify the msql configuration file (usually `my.cnf` or `mysqld.cnf`) by setting `event_scheduler = on` in the `[mysqld]` block.

NOTE: Ubuntu/Debian users: You should **ONLY** edit the file located under `/etc/mysql/mysql.conf.d/` directory, otherwise MySQL will refuse to start/restart. On other distros/OS's, you should look for where the `mysqld.cnf` file is located.

### Migrating from Denora to Anope

[](#migrating-from-denora-to-anope)

If you want to switch from Denora to Anope, please proceed as follows:

1. Install Anope (see above)
2. Shut down Denora
3. Make Anope join the network and double check that it is working fine, e.g. the MySQL tables are being filled with data
4. Configure the `setup/tools/denora2anope.php` script and then run it from command line with `php denora2anope.php`. Be patient and do not interrupt the process!

Denora configuration
--------------------

[](#denora-configuration)

### Required Denora settings

[](#required-denora-settings)

**Change** this to a higher value, such as 15 days (15d) to keep information for a longer time. Important: the servercache value must NOT be smaller than the usercache value!

```
usercache 15d;
servercache 30d;

```

**Change** this to 1h

```
uptimefreq 1h;

```

**Enable** the following parameters by removing the '#' in front:

```
ctcpusers;
keepusers;
keepservers;

```

**Disable** the following parameter by adding a '#' in front:

```
#largenet;

```

### Optional Denora settings

[](#optional-denora-settings)

Limiting chanstats to +r users improves nick tracking. To use this feature **enable** the following parameters by removing the '#' in front:

```
ustatsregistered;

```

Web Server configuration
------------------------

[](#web-server-configuration)

### Apache

[](#apache)

The `AcceptPathInfo` directive should be set to `Default` or `On` in the Apache configuration. It is by default on most servers.

To enable URL rewriting make sure your apache has the `mod_rewrite` module enabled. Then rename `htaccess.txt` to `.htaccess` and enable rewriting in the MagIRC Admin Panel. This is optional, MagIRC also works without rewriting on Apache.

It is also recommended, if you allow slashes `/` in your nicknames or channel names, to set `AllowEncodedSlashes On`

### Nginx

[](#nginx)

Your Nginx configuration file should look like this, adapted to your needs of course:

```
server {
	listen 80;
	server_name magirc.example.com;

	access_log /var/log/nginx/magirc_access.log main;
	error_log /var/log/nginx/magirc_error.log info;

	root /path/to/magirc;
	index index.php index.html;

	location / {
		try_files $uri $uri/ /index.php;
	}

	location ~ ^(/.+\.php)(/.*)?$ {
		try_files $1 =404;
		include /etc/nginx/fastcgi.conf;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
	}
}

```

This will work with or without Magirc rewrite. If you do not have `/etc/nginx/fastcgi.conf`, include `/etc/nginx/fastcgi_params`.

If MagIRC is installed in a directory within your webroot (example.com/magirc/), your Nginx configuration file should look like this, adapted to your needs of course:

```
server {
	listen 80;
	server_name example.com;

	access_log /var/log/nginx/magirc_access.log main;
	error_log /var/log/nginx/magirc_error.log info;

	root /path/to/webroot;
	index index.php index.html;

	location /magirc {
		try_files $uri $uri/ /magirc/index.php;
	}

	location ~ ^(/magirc/.+\.php)(/.*)?$ {
		try_files $1 =404;
		include /etc/nginx/fastcgi.conf;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
	}
}

```

### lighttpd

[](#lighttpd)

Your lighttpd configuration file should contain this code (along with other settings you may need). This code requires lighttpd &gt;= 1.4.24.

```
url.rewrite-if-not-file = ("^" => "/index.php")

```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~327 days

Recently: every ~517 days

Total

10

Last Release

1827d ago

Major Versions

v0.9.0 → v1.0.02014-11-09

PHP version history (3 changes)v0.9.0PHP &gt;=5.3.0

v1.5.0PHP &gt;=5.5.0

v1.6.0PHP &gt;=5.6.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/a81fb03520b825915180853a3be352304d5bf14457643dd2298ea49f4388ce98?d=identicon)[h9k](/maintainers/h9k)

---

Top Contributors

[![Jyzee](https://avatars.githubusercontent.com/u/1625414?v=4)](https://github.com/Jyzee "Jyzee (9 commits)")[![Conti](https://avatars.githubusercontent.com/u/1634118?v=4)](https://github.com/Conti "Conti (7 commits)")[![TehPeGaSuS](https://avatars.githubusercontent.com/u/25697531?v=4)](https://github.com/TehPeGaSuS "TehPeGaSuS (5 commits)")[![h9k](https://avatars.githubusercontent.com/u/1579124?v=4)](https://github.com/h9k "h9k (2 commits)")[![Zoddo](https://avatars.githubusercontent.com/u/5215545?v=4)](https://github.com/Zoddo "Zoddo (1 commits)")[![phillf](https://avatars.githubusercontent.com/u/1618828?v=4)](https://github.com/phillf "phillf (1 commits)")[![SISheogorath](https://avatars.githubusercontent.com/u/8719867?v=4)](https://github.com/SISheogorath "SISheogorath (1 commits)")[![adamus1red](https://avatars.githubusercontent.com/u/2502582?v=4)](https://github.com/adamus1red "adamus1red (1 commits)")

---

Tags

frontendstatsstatisticsircdenoraanope

### Embed Badge

![Health badge](/badges/magirc-magirc/health.svg)

```
[![Health](https://phpackages.com/badges/magirc-magirc/health.svg)](https://phpackages.com/packages/magirc-magirc)
```

###  Alternatives

[wnx/laravel-stats

Get insights about your Laravel Project

1.8k1.8M7](/packages/wnx-laravel-stats)[markrogoyski/math-php

Math Library for PHP. Features descriptive statistics and regressions; Continuous and discrete probability distributions; Linear algebra with matrices and vectors, Numerical analysis; special mathematical functions; Algebra

2.4k7.1M40](/packages/markrogoyski-math-php)[mexitek/phpcolors

A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.

5003.6M18](/packages/mexitek-phpcolors)[aimeos/ai-controller-frontend

Aimeos business controller logic for frontend

966339.3k12](/packages/aimeos-ai-controller-frontend)[rubix/tensor

A library and extension that provides objects for scientific computing in PHP.

2751.4M5](/packages/rubix-tensor)[hi-folks/statistics

PHP package that provides functions for calculating mathematical statistics of numeric data.

398103.5k](/packages/hi-folks-statistics)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
