КРАТКИЙ ответ: Я только что установил новейшую версию PHP в свою систему.
Ответ LONG (и вся боль, которую я испытал на этом пути):
Я постоянно получал ошибку при запуске crontab, в которой говорилось, что определенный класс, который я созданный в моем скрипте - SoapClient
- не был найден. Моя функция автозагрузки тоже не нашла ее; следовательно, как показано в OP, я получал следующую ошибку:
Fatal error: require_once():
Failed opening required '/path/to/includes/initialize.php'
(include_path='.:') in /path/to/my/script.php on line 3
Была еще одна похожая ошибка, которую я получал вот так, и я обнаружил, что проблема заключалась в том, что в старой версии php не было включено расширение SOAP, и когда функция автозагрузки начала его искать, она проверила файл установки php php.ini на наличие строки: include_path
и проверила каталоги в них, чтобы найти класс SOAP, который я пытался включать. Когда не удалось найти класс, возникла фатальная ошибка.
Примечание : ( include_path
в вашем файле php.ini работает аналогично переменной $ PATH в вашей среде Unix).
Я использовал команду locate php.ini
и немного интуиции и обнаружил, что файл php.ini моей системы находится по адресу /private/etc/php.ini.default
. Здесь находился старый файл php.ini - для версии php 5.2.Дело в том, что мыло просто не было включено, и поэтому параметр include_path
моего файла php.ini не находил свое местоположение.
Итак, я загрузил PHP 5.4.4 и выполнил следующие команды:
$ ./configure --enable-soap --with-mysql
$ make
$ make install
Установка была произведена в / usr / local / bin
. Однако установка root php находилась в / usr / bin
, поэтому я выполнил следующую команду, чтобы переместить все содержимое / usr / local / bin
в / usr / bin
, чтобы перезаписать старую версию php:
$ sudo cp -Rvf /usr/local/bin/ /usr/bin
Я указываю: -R
для копирования ВСЕХ файлов в иерархии / usr / local / bin /
, ] -v
, чтобы просто отобразить выходное сообщение, в котором указывается, какие файлы перемещаются по мере выполнения процесса, и -f
, что позволяет мне перезаписывать соответствующие файлы в / usr / bin
по желанию.
После того, как я перезаписал старую версию PHP новой версией, новый файл php.ini располагался в другом месте. Но где? Я выполнил это, чтобы узнать:
$ php -i | grep -i "configuration file"
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
После внесения соответствующих изменений я перезаписал файл /private/etc/php.ini.default новым файлом php.ini, который пришел с моей установкой php 5.4.4.
Альт. Задание cron работает, и мне вообще не нужно было указывать другой путь php. Ваше здоровье!
Если у вас есть один файл с кратким списком данных, для которых вам нужны подробности, вы можете сделать простой grep
. Скажем, например, что ваш список всех данных находится в файле с именем needles.list
, а ваша коллекция данных — в файле с именем haystack.gtf
. Затем вы можете:
$ grep -f needles.list haystack.gtf