To be able to run phpList from commandline you need to use the CLI version of PHP.
To verify your version, type
This should return something similar to the following:
PHP 7.1.9 (cli) (built: Sep 6 2017 11:45:26) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.9, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
The (cli) on the first line indicates the CLI version of PHP. It should not say “cgi” or something else. If you do not get CLI, find out how to install it before continuing.
Use your favourite command-line text editor to edit (or create if it doesn't exist) a file called
With the following content, replacing the paths with what is appropriate for your environment:
#!/bin/bash /usr/bin/php /path/to/your/phplist/lists/admin/index.php -c /path/to/your/phplist/lists/config/config.php $*
Make it executable:
chmod 755 /usr/local/bin/phplist
The crucial element is the “-c config.php” which tells phpList where your config file is.
From then on, you will be able to execute phpList from the command-line.
To execute a sub-command run the phpList binary with the -p flag followed by the sub-command name without a space. E.g.:
Running the phpList command-line script with no arguments will result in a printed list of available sub-commands. The list should look like this:
dbcheck send processqueue processbounces import upgrade convertstats reindex blacklistemail systemstats converttoutf8 initlanguages cron updatetlds runcommand
Two of the most commonly used sub-commands are:
Processqueue (processes the available queues to send queued campaigns):
Process Bounces (process bounce messages received from remote servers and update subscribers bounce records):
Commandline processing requires PHP 4.3.0 or higher.
A few pages in the phpList system can since version 2.7.0 be run with a simple command from the commandline.
The script to use is called “phplist” in the “bin” directory. You will have to edit this script to fit your system.
The normal phpList access restrictions are bypassed, but the Unix users who are allowed to run the script should be mentioned in the “commandline_users” config variable. The identity of a user is determined by the USER environment variable, which may not always match your system.
The “p” parameter is the page that needs to be run. Currently apart of “processqueue” and “processbounces”
mentioned above you can also use phplist -psend.
This will require some more arguments:
and you need to “pipe” the message into the script.
So the full “send” command line would be:
phplist -psend -s This is the subject -l test 1 2 3 -f email@example.com < messagefile