2011-07-02 4 views
1

Lorsque j'exécutePHP ne sera pas exécuter du code dans cmd

s3cmd put --acl-public --guess-mime-type /html/file.png s3://bucket/files/file.png

via cmd dans le mastic, il fonctionne parfaitement, mais lorsque je tente d'exécuter cette via PHP:

system("s3cmd put --acl-public --guess-mime-type /html/file.png s3://bucket/files/file.png");

Rien ne se passe. Est-ce que quelqu'un a une idée de pourquoi cela ne fonctionne pas? Dois-je modifier un paramètre dans php.ini ou suis-je en train de faire quelque chose de mal?

+0

Vouliez-vous utiliser exec()? – DesignerGuy

+0

J'ai aussi essayé exec et ça ne marche pas. – John

+0

De quel type de serveur s'agit-il? (Je crois que les commandes * nix sont exécutées comme 'www-data' et certaines commandes sont exclues) – DesignerGuy

Répondre

0

Il y a peut-être donc restriction à la commande du système, vous devriez essayer de regarder dans le error_log, augmenter le niveau error_reporting ou désactiver le safe_mode dans php.ini

+0

Safe_mode est désactivé. Pour une raison quelconque, PHP ne génère pas de error_log. Les paramètres dans php.ini semblent bien. Si c'est un problème d'autorisation, que dois-je faire pour résoudre ce problème? Le propriétaire des fichiers php est défini sur root, dans httpd.conf, le propriétaire est défini sur apache, cela peut-il être le problème? – John

1

Je deuxième recommandation à regarder le journal Apache fichier, mais je parie que c'est un problème d'autorisations (j'ai eu ce problème ...). Est-ce que Apache (httpd?) A un accès en lecture/écriture à /html/file.png et s3://bucket/files/file.png? Est-ce que s3cmd nécessite des permissions spéciales? Avez-vous besoin d'utiliser gksudo?

+0

J'ai vérifié le fichier journal des erreurs d'Apache et signale 'ERROR: Impossible de trouver un fichier de configuration. Merci d'utiliser l'option --config. A quoi cela sert-il? – John

+0

Cela ressemble à un problème de commande [s3cmd] (http://s3tools.org/s3cmd). Ma conjecture? Il stocke les données de configuration dans votre répertoire personnel. Vous pourriez peut-être simplement le copier depuis votre répertoire personnel. Bien sûr, vous pouvez également su dans votre utilisateur Apache et lancer s3cmd --configure – cwallenpoole

1

Le s3cmd recherche dans le répertoire de base des utilisateurs le fichier .s3cfg. Dans votre cas, apache est probablement l'utilisateur exécutant le programme et Apache n'a pas de fichier .s3cfg.

Vous devez l'exécuter de nouveau en tant qu'utilisateur avec lequel vous souhaitez utiliser s3cmd.

/usr/bin/s3cmd --configure 
Questions connexes