auto_prepend_file无法在cli模式下运行

时间:2011-07-27 12:07:25

标签: php command-line-interface

我无法在我的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工作。

你知道我错了什么吗?

3 个答案:

答案 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