我无法在我的mac上运行auto_prepend_file:
# 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
但是......
# 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
它通过(重新启动的)apache工作。
你知道我错了什么吗?
答案 0 :(得分:5)
auto_prepend_file
命令行开关运行代码时,不执行 -r
。无论PHP本身是从CLI调用还是在可执行文件的shebang中指定,它都可以在命令行上执行PHP文件时正常工作。
答案 1 :(得分:2)
这是记录在案的行为:
此选项仅适用于非常基本的代码,因此有些代码 配置指令(例如auto_prepend_file和 auto_append_file)在此模式下被忽略。
http://www.php.net/manual/en/features.commandline.options.php
答案 2 :(得分:0)
一种解决方法是将要执行的文件内容通过管道传输到php
,而不是使用-r
。例如:
echo "<?php dump('anuise');" | php