Вы можете использовать find
:
find /yourdir -name '*JOHN*' -exec cp {} ~/folder/ \;
Я подозреваю (у меня нет окна Ubuntu для проверки), что проблема связана с разницей между php-cgi и прямым php, используемым в командной строке. Похоже, что Ubuntu использует phpX-cgi при установке стека LAMP. Версия cgi использует файл php.ini, и это может еще больше усложнить ситуацию, поскольку изменит путь к cwd.
phpinfo ()
показывает версию модуля Apache PHP, который предоставляется libapache2-mod-php
. Вам необходимо обновить его (или установить одну из конкретных версий, например libapache2-mod-php7.1
).
Почему я вижу несоответствие?
во время компиляции ( make
) время - исходная конфигурация PHP запускает создание нескольких SAPI. например, php-cli
, php-cgi
, php-debug
и другие в зависимости от конфигурации времени компиляции.
Примечание: у вас может не быть доступа к параметрам конфигурации времени компиляции с пакетной версией PHP для debian или ubuntu, как это делали разработчики пакета - в прошлом (не уверен, что это все еще применимо) - внесены изменения, которые подавляют печать конфигураций времени компиляции (с использованием php-config
), см .: https://lists.ubuntu.com/archives/ubuntu-server-bugs/2010-April / 034631.html
В противном случае каждый SAPI представляет собой двоичный исполняемый файл, который обеспечивает точку взаимодействия для всего, что хочет запустить код PHP в интерпретаторе PHP.
Во время make install
или checkinstall --pkgname = php-self-compiled
или конфигурации пакета эти SAPI будут размещены в разных местах вашей файловой системы.
cli SAPI, который вы получаете при запуске php -v
, скорее всего, будет размещен где-нибудь вроде / bin / php
или / usr / bin / php
, а cgi SAPI будет запущен как демон (как часть подсистемы веб-сервера) при загрузке через сценарий инициализации или systemd.
Таким образом, веб-сервер, который хотел запустить сценарий PHP, будет использовать - предварительно запущенный экземпляр php-cgi
SAPI и передать ему сценарий для запуска. Этот SAPI будет иметь свою собственную конфигурацию времени выполнения (ее можно будет просмотреть, запустив сервер с помощью strace
.)
Если вы запустите php
из командной строки, вы снова получит другой SAPI, возможно, с его собственной конфигурацией времени выполнения, опять же, это можно подтвердить с помощью strace php -v
.
Каждый SAPI - обычно - происходит из одной и той же операции компиляции и, таким образом, имеет много общих конфигураций времени компиляции (например, какие расширения следует добавить и должны ли они быть скомпилированы статическими или связанными во время выполнения), а также номер версии и т. Д.
Вот почему при попытке проверить конфигурацию PHP вы получаете поведение, достаточно похожее, чтобы заставить вас думать, что это одна и та же программа, но все же в некотором роде несовместимые, это отдельные программы, много одних и тех же объектов под капотом, но имеют разные конфигурации и предназначены для обслуживания разных сред, например, когда PHP-cli (который запускает композитор) печатает сообщения об ошибках, он ожидает, что они будут напечатаны на терминале, поэтому он печатает простой текст, когда php-fpm
или php-cgi
выводит ту же ошибку, он переносит ее в HTML, поскольку предполагает, что с ней взаимодействует какой-то связанный с Интернетом процесс . php-debug снова будет взаимодействовать с другим интерфейсом, получать соединения для передачи данных на порт 9000 и т. д.