auto_prepend_file не работает в режиме cli - PullRequest
1 голос
/ 27 июля 2011

Я не могу запустить auto_prepend_file на моем 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

Но тогда ...

# 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 ]

5 голосов
/ 27 июля 2011

auto_prepend_file не выполняется, когда вы запускаете код напрямую через ключ командной строки -r. Он прекрасно работает, когда вы выполняете PHP-файлы в командной строке, независимо от того, вызывается ли сам PHP из CLI или он указан в shebang исполняемого файла.

2 голосов
/ 27 июля 2011

Это документированное поведение:

Эта опция предназначена только для очень простого кода, поэтому некоторые директивы конфигурации (такие как auto_prepend_file и auto_append_file) игнорируются в этом режиме.

http://www.php.net/manual/en/features.commandline.options.php

0 голосов
/ 28 ноября 2018

Обходной путь - передать содержимое файла, который вы хотите выполнить, на php вместо использования -r. E.g.:

echo "<?php dump('anuise');" | php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...