Então eu tenho um script PHP que está usando wget
para baixar algumas imagens. Parece algo assim:
exec('wget -O saveImage.png http://location.of.image');
Quando executo meu script em uma máquina diferente, funciona. No entanto, quando eu corro localmente, não funciona. Eu acho que isso tem a ver com como eu instalei wget
. Localmente, estou executando o Mac OS X 10.6 Snow Leopard e instalei wget
usando o Homebrew . Então, quando eu executo which wget
(como eu), a localização de wget
é /usr/local/bin/wget
(que é um link simbólico para a Adega Homebrew). Eu determinei que o usuário que está executando o script é chamado daemon
. Eu sei que o script wget
é de propriedade do grupo staff
e não acho que o usuário daemon
faça parte desse grupo (mas não sei como verificar). De qualquer forma, não acho que o usuário daemon
tenha permissão para executar o comando e / ou não conseguir encontrar o script. O que devo fazer?
Update: Por isso, consegui executar o script quando especifiquei a localização exata:
exec('/usr/local/bin/wget ...etc');
Isso me faz pensar que não é um problema de permissões, mas sim um problema "não é possível encontrar o wget". Eu não acho que eu possa especificar o local exato, pois é diferente nas várias máquinas em que este script é executado. Então, o que devo fazer para contornar este problema?
Solução:
Adicionando /usr/local/bin
à variável $PATH
do ambiente, o PHP conseguiu encontrar o wget. Aqui está como eu fiz em PHP:
//help PHP find wget since it may be in /usr/local/bin
putenv('PATH=' . getenv('PATH') . PATH_SEPARATOR . '/usr/local/bin');
if (exec('which wget') == null) {
throw new Exception('Could not find wget, so image could not be downloaded.');
}
//now we know wget is available, so download the image
exec('wget ...');