A resposta BREVE : Por fim, acabei de instalar a mais nova versão do PHP no meu sistema.
A LONG resposta (e toda a dor que eu passei ao longo do caminho):
Continuei recebendo um erro quando o crontab era executado, o que indicava que uma determinada classe que instanciei no meu script - SoapClient
- não estava sendo encontrada. Minha função de autoload também não estava encontrando; portanto, como mostrado no OP, eu estava recebendo este erro:
Fatal error: require_once():
Failed opening required '/path/to/includes/initialize.php'
(include_path='.:') in /path/to/my/script.php on line 3
Houve outro erro similar que eu continuei recebendo assim, e eu descobri que o problema era que a versão antiga do php não tinha a extensão SOAP ativada, e quando a função autoload procurava por ela, checava o php O arquivo php.ini da instalação para a linha: include_path
e verifica os diretórios nele para encontrar a classe SOAP que eu estava tentando incluir. Quando não conseguiu encontrar a classe, resultou um erro fatal.
Nota : ( include_path
no seu arquivo php.ini funciona de forma semelhante à variável $ PATH no seu ambiente Unix).
Eu usei o comando locate php.ini
e um pouco de intuição e descobri que o arquivo php.ini do meu sistema estava em /private/etc/php.ini.default
. Esta era a localização do arquivo antigo php.ini - o da versão 5.2 do php. O ponto é, sabão simplesmente não foi ativado e, portanto, o parâmetro include_path
do meu arquivo php.ini não encontrou sua localização.
Então, eu fiz o download do PHP 5.4.4 e executei os seguintes comandos:
$ ./configure --enable-soap --with-mysql
$ make
$ make install
A instalação foi feita em /usr/local/bin
. No entanto, a instalação do php root estava em /usr/bin
, então eu fiz o seguinte comando para mover todo o conteúdo de /usr/local/bin
para /usr/bin
, para sobrescrever a versão antiga do php:
$ sudo cp -Rvf /usr/local/bin/ /usr/bin
Eu especifico:
-R
para copiar TODOS os arquivos dentro da /usr/local/bin/
heirarchy, -v
para simplesmente exibir uma mensagem de saída informando quais arquivos são movidos à medida que o processo ocorre e -f
, o que permite me sobrescrever os arquivos aplicáveis em /usr/bin
conforme desejado.
Depois que eu substituí a versão antiga do PHP pela nova versão, a localização do novo arquivo php.ini estava em outro lugar. Mas onde? Eu corri isto para descobrir:
$ php -i | grep -i "configuration file"
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
Depois de fazer as alterações aplicáveis, eu sobrei o arquivo em /private/etc/php.ini.default com o novo arquivo php.ini que veio com a minha instalação do PHP 5.4.4.
Viola. O cron job está funcionando e eu não precisei especificar um caminho php diferente. Felicidades!