PhpBibliography Logo

PhpBibliography - web based bibliography system - OLD VERSION

by Lorenzo Bettini

PhpBibliography allows you to publish your bibliography online (and to edit it via web).

A brand new version of PhpBibliography is available at the home page. This page is here only as a reference for old installations.

It is implemented in Php 5 and uses MySql 5 (however, it might work also with Php 4, and also with MySql 4, but I'm not testing this).

Since version 0.5, it also uses some AJAX techniques to perform some checks while editing/inserting data.
Errors will be reported in this color (and they prevent from inserting data), while warnings in this color, and they do not prevent frominserting data. It can also generate RSS feeds and import papers from DBLP, thanks to Ezio Bartocci.

This is free software, open source, released under GPL.

Download and Install

You can download PhpBibliography from here:

You need a web server with php support and a MySql server.  In particular, phpbibliography was developed under Linux, using Apache 2 web server (I guess it should work also on other systems).

These are the main additions in the new releases.

You can also find details about new features on my blog, in this area:

Upgrade from version <n> to <n+1>

When you upgrade to a new version, you should first check whether in the distribution file you find a file named update-<n>-<n+1>.sql (e.g., update-0.6-0.7.sql); if there's such a file, it means that the database structure needs an update, and thus you should such file, e.g., run the command:
mysql -u <your user> -p <bibliography database> < update-<n>-<n+1>.sql
Of course, you need to use the same database name you had used when you performed the original installation.

Note that the updates sql file are always thought for upgrading from a version n to a version n+1; if you're upgrading from an older version n to a newer version n+m, you should apply all the update files, starting from update-<n>-<n+1>.sql up to update-<n+m-1>-<n+m>.sql.

Then, copy all the files (you can skip the subdirectories) of the html directory to the desired directory in your web server (replacing all the previous files), but please, DO NOT REPLACE the existing config.php, otherwise you will lose your previous configurations. Since version 0.3 the config.php is not distributed: the file config_example.php is distributed and it must be copied into config.php during a brand new installation. This way, you can safely copy all the files in the html directory into your server directory without risking to override your previous config.php.

Brand new install

These instructions assume you already have a working web server/php/MySql system:
  1. Create a database called bibliography (this is the default but you can choose the name you want, provided you update config.php accordingly, see below; for instance some providers already set up some databases for you, with specific names: you should choose one of these and then update config.php accordingly, see below)
  2. (Optional) assign user and password to the created database
  3. upload the file bibliography.sql you find in the zip file (this will create the table structures); in order to do this you can either use the following mysql command, where <your user> should be replaced with the user you assigned to the database (default: root) and <bibliography database> is the name of the database you created (default: bibliography):
    mysql -u <your user> -p <bibliography database> < bibliography.sql
    Alternatively you can use your favorite mysql management system, e.g., phpMyAdmin.
    Note: phpbibliography relies on InnoDB tables for the database, but it should work even with standard MySql table types (I haven't tested this) but you lose referential integrity.
  4. Copy (or even better, move) the file config_example.php into config.php and edit the config.php file in the html directory according to your configuration: copy all the contents (including the subdirectories) of the html directory to the desired directory in your web server (make sure that the subdirectory files is writable from the web server user - you can make it writable and accessible from anyone. This directory will store the papers you upload via phpbibliography)
If everything was setup correctly you should be able to access to your bibliography site with a browser.

Customizing the format of a paper (also on the fly)

Since version 0.4, you can pass, in the URL, some variables that allows you to customize the way a paper is shown on the screen. These parameters can also be specified as global variables in the config file. Of course, the value passed in the URL has the precedence over the one specified in the config file. Here we list these parameters (in the URL they must be passed without the $, using the GET passing method syntax) and their default values:

Adding and modifying users and papers

(Since version 0.3 an online help is available when editing/adding papers; please refer to that help for further details).

The first time you access your online bibliography it will, of course, contain no entries.

You can access the administration page of phpbibliography by accessing the file admin.php (i.e., if your phpib site is http://mysite/phpbibliography/ you should access the administration page as http://mysite/phpbibliography/admin.php). You'll be asked a username and a password. Phpbibliography comes with a predefined admin user, password admin. Use it to login the first time and then go in the users section and change the password.

IMPORTANT: the authentication relies on sessions, and typically sessions are implemented through cookies (although php can handle them even without them, if configured accordingly). So, you might need to enable cookies in your browser; however the system will perform a check about cookies.

You can create further users if you want; if you set the "admin" check box when creating/editing a user, that user will have administration privileges (e.g., he'll be able to change other users besides himself).

Next you can start adding your authors, categories of the papers, and then the papers themselves. This can be done by accessing the main menu of admin.php. Since version 0.3, you can also add new authors and new categories on the fly when editing/adding a paper.

When inserting a paper you can also upload two files for your paper (they will be uploaded in the files subdirectory, see above); alternatively, instead of uploading a file you can insert a direct link (URL) to the paper if the paper is already available on-line somewhere else.

BibTex Management

Since version 0.2, when displaying a paper information, the system will generate a link to a bibtex page, where the bibtex of that paper will be shown. Such page can either be generated automatically by the system, or can simply show the bibtex field of the paper, if this is set.  When inserting a paper you can specifiy the type of the paper (according to the bibtex syntax, i.e., INPROCEEDINGS, ARTICLE, etc.), and you can manually insert the bibtex. If you leave the bibtex field empty, then, when displaying the list of papers, the system will automatically generate the corresponding bibtex.

Since version 0.2, you can add a new paper also by using a bibtex entry (see the menu in the admin page). This will interpret the bibtex entry and create a paper entry; once the paper is created, you'll have the chance to modify it (and add missing parts, such as the abstract and upload files for the paper). When inserting a paper through a bibtex, the system will use the authors specified in the bibtex entry; in particular, it will search for the authors in the already existing author table (it will also infer the name of the author if this is not fully specified in the bibtex entry, e.g., if the author in the bibtex is L. Bettini, and the author table contains the author Lorenzo Bettini, then it will use this author); if it does not find a matching author, it will automatically add it to the table of authors. When inserting a paper this way, you can also decide whether to set the paper bibtex field to the bibtex that was used to insert the paper.

Since version 0.4, papers can also be modified through a bibtex; this relies on the new paper field, introduced in version 0.4, bibtex key. Thus, the system will modify the paper that has the same bibtex key of the bibtex that is used for modification. If you update from a previous version, or simply don't feel like manually set the bibtex key for each entry, you can use the functionality "Generate Missing BibTex Keys" from the administration menu; this will generate and assign unique bibtex keys to papers who have not set it. Papers where bibtex key is already set will not be touched.

Importing from DBLP

Since version 0.5, thanks to Ezio Bartocci, it is possible to import papers from DBLP Computer Science Bibliography (note that this feature is still experimental). After you inserted the author's name and surname, the DBLP site will be queried and all the author's found papers will be presented to the user; the system will already check which papers are similar to those already present in the database; if a similar paper is found in the database that entry will not be automatically selected for the import (and will be highlighted in red); the other papers will be automatically selected for import. The user will then be able to further select all the papers to import, and press the import button (it is also possible to select all the papers or all the papers of a specific year). Note that the procedure might require some time.

Classification of papers

You can classify a paper according several criteria, and since version 0.4 these criteria can be dynamic. Each criterion is called classification. By default the system already contains the classification called Categories (also for backward compatibility). Since version 0.4 you can add further classifications (e.g., keywords). Moreover, bibtex fields can be associated to specific classifications. (Please refer to the online help).

A classification can be specified as "multiple" if more than one category belonging to such classification can be assigned to a paper (the classification "categories" has this attribute, since it is compatible with existing categories). Otherwise, only one category belonging to such classification can be assigned to a paper.

For each classification, the system will generate a selection field in the paper editing form. (Please refer to the online help).

Viewing and showing papers

The initial default page of the bibliography site will list all the papers in the database, but it also provides a menu to view the papers, in order to show them in a specific order, or in order to filter them.

By default, papers will be shown by descending year (so that the most recent papers are shown first); moreover, since version 0.6, a modification stamp is added to each paper; this timestamp will be used when ordering papers (i.e., papers of the same year and a more recent timestamp will be shown first).

Since version 0.3, the main page provides also means to search papers according to specific values for each fields of papers.

Since version 0.5, the main page also shows a link to an automatically generated RSS feed (thanks to Ezio Bartocci). This link is generated provided the variable $linktorss is set to "1" in the config file.

Since version 0.6, a paper can be made private; If a paper is marked as private, then it will be visible only for logged users.


If you want to include your own papers (i.e., only those where you're one of the author) in your own web site (even different from that where you installed the bibliography system) you can filter the papers by showing only those that  belong to you.  Then you can copy the URL of your browser, that will something of the shape http://<yourbibliographysite>/index.php?groupby=0&author=21, and use it as a link in your web site.  Furthermore, if you use php in your web site as well, you can simply embed it in a page of your web site, for instance with a line similar to <?php include("http://<yourbibliographysite>/index.php?groupby=0&author=21");?> (of course the most important part is the identifier of the author whose papers your want to show); this works if your php system is configured so to permit inclusion from sites different from the current one.

Similarly, you can show papers that are obtained as the result of a paper search (using the button in the main page, since version 0.3) by copying the URL that appears when you performed the search (it is quite a long url since it contains the search criteria).

Since version 0.4, you can pass some parameters on the url, in order to customize the formatting of the paper on the fly.

For instance, reusing the above example, if you use this url:
You also specify that only the extensions of the files of the papers will be shown, and no link to details of the papers will be generated.

If you use this url:
You also specify that the papers will be sorted according to their title.

You can use these links in other web pages to link to a list of pubblicactions. This is how I do to show the links to my papers (taken from another bibiliography web site) into my webpage:; the research papers are taken from a phpbibliography site, the technical papers are taken from another phpbibliography site.

You can do the same with RSS links that are shown in the main page, e.g., for inserting RSS links to your papers in your home page.


Please feel free to email me for any problem and comments/suggestions. (Find my email address at my home page You can also use the sourceforge mechanisms to communicate bugs, feature requests, patches.