Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivo batch + exec() + .exe


LBARROS

Pergunta

Bom dia pessoal. estou com um probleminha chato aqui. Vou explicar direito pra vocês saberem qual é a da parada. Na faculdade em que trabalho, temos um servidor de CVS (controle de versão) rodando em linux. O site da intranet é programado em PHP, e roda em um Windows 2003 Server. Quem faz a programação no site não sou eu, mas a mim foi delegada uma tarefa de automatizar uma rotina do CVS.

O que deve acontecer é o seguinte:

Quando o usuário clicar no link, ele roda um batch que loga no CVS, dá um "checkout" no arquivo, e traz a última versão pro Win 2003. No servidor, se eu executar o batch na mão, funciona direitinho. Mas quando é executado pelo PHP, somente os comandos nativos do shell do Windows (cmd) são executados, que no caso são "del" e "move". Dentro do batch, há uma chamada pro CVS, que não é executada. No servidor Win2003, além do Wampserver/Joomla eu instalei o TortoiseCVS, pois ele cria as entradas no path (variável de ambiente) e instala o CVSNT (cliente CVS Windows) pra mim. O batch tá assim:

d: //muda para o drive (coloquei por segurança, pra não executar nada em C:\)

cd D:\wamp\www\intranet\temp //acessa o diretório pra onde o "checkout" vai rolar

cvs -d :ssh:login:senha@servidor:/cvs co repositorio/arquivo.xxx //linha de comando pra acessar o CVS. Essa não funciona

cd D:\wamp\www\intranet\dmdocuments //muda pro diretório de download

del arquivo.xxx //exclui o antigo, caso o "move" não substitua

move /Y D:\wamp\www\intranet\temp\repositorio\arquivo.xxx D:\wamp\www\intranet\dmdocuments //move o arquivo do diretório temporário pra pasta de download

Bem, pra saber que o batch funcionou, como eu não tinha o arquivo.xxx, então eu criei um fictício, como se o comando do CVS tivesse funcionado. Pude perceber que os comandos do DOS funcionaram, mas o "cvs" não.

Como dito anteriormente, se eu executar o batch ele funciona completamente, e se eu abrir um "cmd" e digitar um cvs -d ... eu tb consigo dar um "checkout" no arquivo.

Li pela internet, que poderia ser algo relacionado a um safe_mod (ou safe_mode?) dentro do php.ini. Fui olhar lá e tá definido para "off"

Alguém tem alguma sugestão??? Desde já agradeço!!!

Editado por LBARROS
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
No servidor, se eu executar o batch na mão, funciona direitinho. Mas quando é executado pelo PHP, somente os comandos nativos do shell do Windows (cmd) são executados, que no caso são "del" e "move".
Como dito anteriormente, se eu executar o batch ele funciona completamente, e se eu abrir um "cmd" e digitar um cvs -d ... eu tb consigo dar um "checkout" no arquivo.

Está com jeito de ser problema de permissões.

Como elas estão para todos esses carinhas? Ou seja quem pode o que com que.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha, mudei permissões no Win2003, na pasta C:\Arquivos de programas\CVSNT, que é onde fica o cvs.exe. Nada mais. A permissão de execução pra essa pasta tá para "Todos". Mas você me despertou uma curiosidade: como não me lembro se é para o ususário Todos ou grupo Todos (não me lembro se ambos existem), vou conferir lá, pois não sei se o Joomla usa um usuário diferente, que não pertença ao Domínio de rede atual...

Vou testar lá e posto aqui!

Valeu pela dica, abração!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...