I cannot get an auto_prepend_file run on my mac:
# cat /opt/local/lib/php/test.php
<?php
function test() { return 'foo'; }
# php --ini | grep php.ini
Configuration File (php.ini) Path: /opt/local/etc/php5
Loaded Configuration File: /opt/local/etc/php5/php.ini
# cat /opt/local/etc/php5/php.ini | grep auto_prepend_file
auto_prepend_file = "/opt/local/lib/php/test.php"
# ls -la /opt/local/etc/php5/php.ini
-rw-r--r-- 1 root admin 68630 Jul 27 13:53 /opt/local/etc/php5/php.ini
# php -r "echo ini_get('auto_prepend_file');"
/opt/local/lib/php/test.php
But then...
# php -r "echo test();"
Fatal error: Call to undefined function test() in Command line code on line 1
# php -i | grep auto_prepend_file
auto_prepend_file => /opt/local/lib/php/test.php => /opt/local/lib/php/test.php
It works through the (restarted) apache.
Do you have any idea what I could have made wrong?
This is documented behavior:
http://www.php.net/manual/en/features.commandline.options.php
auto_prepend_file
is not executed when you run code directly through the-r
commandline switch. It works fine when you execute PHP files on the commandline, regardless if PHP itself is called from the CLI or it is specified in the shebang of the executable file.A workaround is to pipe the file content you want to execute to
php
instead of using-r
. E.g.: