Странный вывод из exec ()

0

Когда я запускаю этот PHP-скрипт с локального сервера apache на моем macbook:

<?php
    exec('php -v 2>&1', $output);
    var_dump($output);
?>

Я вижу следующий результат:

array(4) { [0]=> string(46) "dyld: Symbol not found: _sqlite3_intarray_bind" [1]=> string(84) " Referenced from: /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData" [2]=> string(66) " Expected in: /Applications/XAMPP/xamppfiles/lib/libsqlite3.dylib" [3]=> string(69) " in /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData" }

Но вместо этого я должен видеть следующий результат:

PHP 5.5.14 (cli) (built: Sep  9 2014 19:09:25) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

Почему я не получаю ожидаемый результат?

Я пробовал просматривать журналы ошибок apache и не обнаружил никаких дополнительных ошибок, так как они все равно перенаправляются на вывод сценария. Я также попытался разобраться с этой проблемой, но, похоже, только нашел результаты, связанные с Yosemite, которые на самом деле не помогли. Что еще я должен попробовать?

Теги:
codeigniter
exec

1 ответ

1
Лучший ответ

Нашел решение моей проблемы, но все еще не знал, почему это происходит. У меня все еще есть чувство, что это вещь Йосемити, но кто знает...

Решение:

PHP_BINDIR константа PHP_BINDIR возвращает полный путь к PHP_BINDIR PHP, поэтому просто добавьте их в строку exec так:

<?php
    exec(PHP_BINDIR.'/php -v 2>&1', $output);
    var_dump($output);
?>

Теперь ваш сценарий должен быть вызван как ожидалось.

Надеюсь, это помогает кому-то другому.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню