Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

dúvida com zftool

Olá, estou com problema com o zend tool, não consigo executar o ./vendor/bin/zf.php pra verificar os módulos instalados e muito menos criar o módulo estoque conforme passado no curso. Meu S.O. windows 10 - 64bits

segue o problema:

C:\xampp\htdocs\estoque\skeleton-application
>./vendor/bin/zf.php
'.' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.

se eu tentar com php ./vendor/bin/zf.php da esse problema

C:\xampp\htdocs\estoque\skeleton-application>php ./vendor/bin/zf.php

dir=$(d=${0%[/\\]*}; cd "$d" > /dev/null; cd "../zendframework/zftool" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
        # Cygwin paths start with /cygdrive/ which will break windows PHP,
        # so we need to translate the dir path to windows format. However
        # we could be using cygwin PHP which does not require this, so we
        # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
        if [[ $(which php) == /cygdrive/* ]]; then
                dir=$(cygpath -m "$dir");
        fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/zf.php" "$@"

Ou se eu tento no gitbash ele me retorna o HTML do zf.php

se tentar o comando zftool, retorna command not found.

Buscando alguma solução no fórum não encontrei nenhum tópico solucionado, alguém poderia me ajudar!!

E gostaria de dar uma sugestão em todos os outros cursos ou na maioria deles sempre tem uma explicação nem que seja somente por escrito de como trabalhar em windows, linux e mac, senti falta disso nesse curso.

13 respostas

Oi Eduardo, tudo bom?

O comando:

./vendor/bin/zf.php

Realmente n vai funcionar no windows pois ./ é a forma de executar scripts no ubuntu.

Tenta algo como:

php vendor\bin\zf.php
// barras invertidas na URL pois é o padrão do seu S.O.

Assim você executaria o script php com o proprio php da sua máquina =)

Boa tarde André!

Valeu pela dica, porém me retorna esse erro:

$ php \vendor\bin\zf.php modules
Could not open input file: vendorbinzf.php

eu fiz a instalação conforme instrução do professor só que no console não reconhece os comandos do zftool

$ zf.php modules
bash: zf.php: command not found
$ zftool.phar modules
bash: zftool.phar: command not found

é necessário fazer mais alguma configuração na máquina ??

O zendtool não funciona!

alguém pode me ajudar??

Estranho, parece que nosso separador de diretório foi ignorado:

Could not open input file: vendorbinzf.php

De qualquer forma, pelo erro:

bash: zf.php: command not found

Significa que o zend não está configurado no path do seu php.

aqui tem um tutorial step-by-step bem explicado de como fazer essa configuração.

Essa discussão também rolou aqui, onde o Wanderson cita a documentação, caso ajude =)

Se, mesmo adicionando esse path no seu seu php você encontrar o mesmo erro, significa que você precisa adicionar o php às variaveis de ambiente do seu windows.

aqui você encontra um tutorial legal abordando o assunto, além de adicionar o php nas variaveis de ambiente também rola uma configuração para o composer e git =)

Qualquer problema é só falar.

Abraço e bons estudos.

Olá André!

Segui as instruções do tutorial eu já tinha visto esse tutorial e outros tbm, agora me retornou este problema:

* ZF ERROR **

In order to run the zf command, you need to ensure that Zend Framework is inside your include_path. There are a variety of ways that you can ensure that this zf command line tool knows where the Zend Framework library is on your system, but not all of them can be described here.

The easiest way to get the zf command running is to give it the include path via an environment variable ZEND_TOOL_INCLUDE_PATH or ZEND_TOOL_INCLUDE_PATH_PREPEND with the proper include path to use, then run the command "zf --setup". This command is designed to create a storage location for your user, as well as create the zf.ini file that the zf command will consult in order to run properly on your system.

Example you would run:

$ ZEND_TOOL_INCLUDE_PATH=/path/to/library zf --setup

Your are encourged to read more in the link that follows. Zend_Tool & CLI Setup Information (available via the command line "zf --info") Home directory found in environment variable HOMEPATH with value \Users\eserqueira Storage directory assumed in home directory at location \Users\eserqueira/.zf/ Storage directory does not exist at \Users\eserqueira/.zf/ Config file assumed in home directory at location \Users\eserqueira/.zf.ini * Config file does not exist at \Users\eserqueira/.zf.ini

To change the setup of this tool, run: "zf --setup"

eu inclui na variavel de ambiente a library:

C:\xampp\htdocs\ZendFramework-2.4.13\library

o diretório bin

C:\xampp\htdocs\ZendFramework-2.4.13\bin

e no php.ini

; Windows: "\path1;\path2"
include_path = ".;C:\xampp\htdocs\ZendFramework-2.4.13\library"

Sinceramente não sei mais o que devo fazer!

Li vários tutoriais nada funciona.

Será que você consegue me ajudar??

Opa, legal, já temos o php configurado nas variaveis de ambiente. Boa!

Agora precisamos settar o path no php.ini certo. Normalmente o php.ini ja vem com um include path, algo como:

; Windows: "\path1;\path2"
include_path=".;C:\xampp\php\PEAR;"

O problema maior é que podem existir algumas possibilidades de php.ini. Se você usa o xampp essa linha deveria estar no arquivo C:\xampp\php\php.ini. Teoricamente basta adicionar o caminho do seu zendo em seguida separado por ;:

; Windows: "\path1;\path2"
include_path=".;C:\xampp\php\PEAR;C:\xampp\htdocs\ZendFramework-2.4.13\library"

Tendo isso configurado, segundo a menssagem de erro:

The easiest way to get the zf command running is to give it the include path via an environment variable ZEND_TOOL_INCLUDE_PATH or ZEND_TOOL_INCLUDE_PATH_PREPEND with the proper include path to use, then run the command "zf --setup". This command is designed to create a storage location for your user, as well as create the zf.ini file that the zf command will consult in order to run properly on your system.

A gente precisa incluir o ZEND_TOOL_INCLUDE_PATH nas variaveis de ambiente do windows.

Você pode fazer isso clickando com o botão direito em meu computador e selecionando propriedades. Em configurações avançadas do sistema você vai encontrar o botão variáveis de ambiente. Clickando nele você vai encontrar a janela onde é possivel adicionar uma variavel clickando em novo... =)

Depois a gente precisa rodar o zf --setup, assim ele vai criar o zf.ini no diretorio certo.

Pois, aparentemente, ele está procurando no seu HOMEPATH do windows (\Users\eserqueira/.zf/):

Your are encourged to read more in the link that follows. Zend_Tool & CLI Setup Information (available via the command line "zf --info") Home directory found in environment variable HOMEPATH with value \Users\eserqueira Storage directory assumed in home directory at location \Users\eserqueira/.zf/ Storage directory does not exist at \Users\eserqueira/.zf/ Config file assumed in home directory at location \Users\eserqueira/.zf.ini * Config file does not exist at \Users\eserqueira/.zf.ini

E, acredito que esse diretório não exista.

Lembra que toda alteração no seu php.ini requer a reinicialização do apache. Que, no seu caso, é gerenciado pelo xampp.

Além disso, vale lembrar que ao alterar as variaveis de ambiente do seu windows, você precisa fechar e abrir um terminal novo para que ele reconheça.

Tendo a variavel de ambiente definida no seu windows e o path no php.ini, nenhum erro deveria ocorrer após a reinicialização do apache e do terminal.

Entretanto, se alguma coisa rolar, manda aqui o erro pra gente discutir =)

Aguardo retorno!

Eu já havia feito essas alterações, porém o erro persiste!

Estranho, você pode compartilhar com a gente seu php.ini e um print da suas variaves de ambiente do windows?

Qual versão do zendo você ta usando?

De qualquer forma, na documentação do zend tools, são apresentadas 3 formas de instalar a ferramenta. O curso segue pelo composer, mas se você estiver tendo problemas com o composer no windows você pode usar o arquivo .phar também.

Caso você esteja tendo muito problema para executar scripts pelo terminal do windows, que é meio fraco, eu recomendo a utilização de um console mais robusto. Por exemplo o cmder, que executa scripts com mais facilidade.

Com ele, você consegue executar comandos ./ assim como nos exemplos do curso.

As vezes a configuração de ambiente no windows pode ser bastante problematica e esse tipo de terminal fica mais proximo dos terminais unix, facilitando um pouco o processo.

Então no início do curso eu tentei seguir pela mesma versão que o instrutor está orientando que é o Zend 2.5.1, seguindo os mesmos comandos pelo composer, para instalar o zend, consegui executar com o comando php -S localhost:8080 e subiu no navegador certinho.

Depois consegui instalar o zendtool seguindo a orientação do instrutor pelo composer, até aqui tudo blz.

a "novela" kkk começou na hora de executar o comando ./vendor/bin/zf.php modules que é um comando linux, mas mesmo no padrão do windows da aqueles erros que já conversamos aqui.

Eu quero usar a mesma versão do curso pelo composer que acredito que é a forma correta de se trabalhar, como não estava rolando fui buscar uma solução na net, tentei com algumas versões anteriores só para testar se funcionava, com a versão 1.12.3 eu consegui configurar as variáveis de ambiente e funcionou com esta versão, executei o comando zf show version e rolou, porém o zend tool continuou com problema.

Eu tinha visto alguém comentar sobre o cmder no fórum, estou usando ele, e realmente ele é bem melhor que o console do windows.

Segue as configurações do php.ini e path do windows:

Trecho do arquivo php.ini

; Windows: "\path1;\path2"
include_path=".;C:\xampp\php;C:\xampp\htdocs\ZendFramework-2.4.13\library"

path da variavel de sistemas do windows

C:\xampp\php;
C:\composer;
C:\xampp\htdocs\ZendFramework-2.4.13\library;
C:\xampp\htdocs\ZendFramework-2.4.13\bin

path do zend nas variaveis de sistema do windows coloquei desta forma:

ZEND_TOOL_INCLUDE_PATH = 
C:\xampp\php;C:\xampp\htdocs\ZendFramework-2.4.13\library

e desta forma tbm para testar:

ZEND_TOOL_INCLUDE_PATH = 
C:\xampp\htdocs\ZendFramework-2.4.13\library

Esta versão não é a mesma do curso eu coloquei só para testar se com uma versão anterior resolvia, mas tbm não está rolando eu prefiro usar a mesma versão do curso para não ter problemas futuros.

A versão do Zend que tem no site é a 3.0.1 nessa versão tbm não achei os diretórios library e bin para coloca-los nas variáveis de ambiente.

solução!

Oi Eduardo, perdão pela demora.

Subi um ambiente windows, instalei o php 7.1.8 64bits extrai o conteudo desse arquivo na pasta C:\php.

https://image.ibb.co/dqnkz5/php_Folder.jpg

Tendo o php instalado, instalei o composer, pelo wizard fornecido no site.

Ao terminar a instalação do composer pelo wizard as variaveis de ambiente com o composer estão atualizadas: https://image.ibb.co/f4NDmk/variaveis_ambiente.jpg

Tendo o composer instalado, criei uma pasta de teste no meu desktop e dentro dela executei o comando:

C:\Users\andre chaves\Desktop\testeZend\

composer create-project -sdev zendframework/skeleton-application:2.5
// versão do curso

Com isso temos nossa skeleton-application

https://image.ibb.co/bZC2e5/skeleton_app.jpg

Dentro da pasta skeleton-application, instalei o zendtools, pelo composer:

C:\Users\andre chaves\Desktop\testeZend\skeleton-application

composer require zendframework/zftool:dev-master

A partir desse momento, já é possivel utilizar o zf.php do zendframework. Mais especificamente no diretorio:

 php vendor\zendframework\zftool\zf.php modules

https://image.ibb.co/gFYaz5/zfPhp.jpg

Aqui o retorno já é funcional. Mas, caso você queira um caminho mais curto, também tem o .bat:

vendor\bin\zf.php.bat modules

https://image.ibb.co/doXkz5/zfBat.jpg

No seu caso, a unica diferença seria o path do php, já que seu php está sendo gerenciado pelo xampp.

Lembrando que as versões mais recentes do ZendFramework não são compativeis mais com o ZendTools, então infelizmente é crucial as versões mais antigas =/

A forma mais facil de gerenciar qualquer coisa relacionada à frameworks php sempre vai ser o composer, então é bom ter ele instalado no seu terminal ao invés de utilizar o .phar.

Acredito que seguindo este passo-a-passo você não tenha problemas para executar os compandos do ZendTools no seu projeto.

Se algum problema acontecer, compartilha aqui =)

Muito obrigado André funcionou de boa, estranho que segui este passo a passo e me deu tanta dor de cabeça, única diferença como você mesmo comentou foi que meu php esta sendo gerenciado pelo xampp e nesse caso esta direto no c: e meu php é o 5.6.30 e este é o php 7.1.18 outra diferença tbm.

Vou analisar com mais calma para entender o que eu estava fazendo de errado.

Gostaria de dar a sugestão de colocar este tutorial que você fez na introdução do curso, porque pode ter certeza que outros alunos vão passar por essa mesma dificuldade, como muitos outros passaram, pelo que vi no fórum a maioria das dúvidas no fórum é sobre este ponto, pra quem está iniciando é complicado, mas ficou muito boa essa explicação final!

Valeu pela paciência!

Para sugerir uma melhoria, basta clickar nas ... no canto direito superior de cada atividade/video.

A de instalação do zend você pode fazer nesse link referente a primeira atividade do curso.

Qualquer coisa é só falar.

Abraço e bons estudos =)

Ok, obrigado!