Setting PHP.INI path (or file) for PHP CLI shell scripts

Running a PHP script from the command-line, or CLI, is quite useful at times and is often used to perform some automated task, like a CRON cleanup script, to send out reminders, etc.

It’s common that these CLI scripts need some, but possibly not all, settings that are similar to the main application’s. I may, for example want to include the database configuration settings shared with the main application. So I often create a separate php.ini file for this purpose.

Running /usr/bin/php -c /my/very/special/path cronScript.php is simple enough, but what if I want to be able to create an “executable” PHP shell script? The obvious answer would be something like:

#!/usr/bin/php -c /my/very/special/path

at the top of the .php file, followed by my PHP code, right? Except that may not do what you want. I could not get the PHP interpreter to load anything in /my/very/special/path by using the above construct, even if it works from the actual command-line. After banging my head against the wall for a while, this turns out to work for these “shell scripts”:

#!/usr/bin/php -c=/my/very/special/path

Note the use of the = (equal) sign between the -c and the path (or file).

Carry on.

Removing stubborn account and/or account alias in Zimbra

ZimbraZimbra can sometimes be very stubborn when it comes to removing an account or an account alias either via the admin console or by using zmprov. That’s when LDAP access comes in handy. This may, or may not, help you:

# su - zimbra
$ source ~/bin/zmshutil 
$ zmsetvars
$ ldapdelete -r -x -H $ldap_master_url \
                   -D $zimbra_ldap_userdn 
                   -w $zimbra_ldap_password \

Possible output may be:

ldap_search: No such object (32)
ldap_delete: No such object (32)
  matched DN: dc=com

You can see which matches have been made and what has been (or has not been) removed.