2016-11-27 1 views
0

Mise à jour: après un certain nombre de recherches, il semble qu'Azure puisse restreindre ma capacité à exécuter certaines commandes du shell. Je suis actuellement sur un plan d'application Web Standard 1 - que dois-je faire pour pouvoir utiliser l'utilitaire BCP via PHP?Exécution d'un BCP à partir d'une application Web Azure PHP

J'ai donc un script PHP en cours d'exécution sur mon application Web Azure et j'ai essayé d'utiliser BCP pour télécharger des données. J'ai réussi à exécuter la commande avec succès via la console Azure, mais j'ai du mal à l'exécuter via PHP.

Code PHP:

$upload_dir = '../uploads'; 
$test = shell_exec("bcp [database].[dbo].[Group] IN $upload_dir/working/Group.csv -S <server>; -T -f $upload_dir/format/Group.fmt -F2"); 
die($test); 

Quand je lance cela, je reçois aucune réponse du script et l'interrogation de la base de données indique que le téléchargement a échoué. Lorsque j'essaie un test plus simple en utilisant

$test = shell_exec("echo 'Hello World'"); 
die($test); 

Je reçois la sortie attendue, 'Hello World'. Pour la structure du fichier, le script PHP se trouve dans le dossier wwwroot/scripts, et les fichiers CSV et FMT se trouvent respectivement dans wwwroot/uploads/working/Group.csv et wwwroot/uploads/format/Group.fmt. .

Y at-il quelque chose qui me manque lorsque j'essaie d'exécuter des commandes shell via PHP? Je suis assez nouveau à ce sujet, donc j'apprécie toute l'aide!

Merci!

+0

Avez-vous une mise à jour? –

Répondre

0

Selon votre description, il semble que vous ayez copié bcp.exe et bcp.dll dans le répertoire Azure Web Apps et tenté d'utiliser shell env pour exécuter les commandes bcp. Comme le chemin du répertoire par défaut de la console Azure est le répertoire racine de Azure Web Apps, je suppose que oui la structure de votre application ressemblera:

wwwroot/ 
     bcp.exe 
     bcp.dll 
     scripts/ 
     uploads/ 
     ... 

Selon l'extrait de code, votre script php dans scripts dossier ne peut pas trouver la commande bcp , alors vous avez la page blanche.

Vous pouvez essayer de déplacer les fichiers bcp.exe et bcp.dll dans le dossier des scripts ou de modifier la commande shell, par exemple. Si j'ai une mauvaise compréhension de votre question, n'hésitez pas à me le faire savoir.

+0

Merci de répondre - étant donné que le serveur d'applications Web Azure s'exécute sur un serveur Windows, BCP est installé par défaut. Le problème était que le serveur ne me permettait pas d'exécuter shell_exec avec bcp ou d'autres commandes telles que ls. J'ai fini par créer une machine virtuelle séparée où j'aurais la possibilité d'exécuter BCP. – user2884505