2017-09-25 3 views
0

Vous cherchez la possibilité d'automatiser la possibilité pour un script bash de prendre le contenu d'un programme .PHP et le créer dans un répertoire spécifique avec des permissions de 755. Je veux essentiellement pour donner à l'utilisateur ce script .sh qui va installer les programmes et les fichiers appropriés pour obtenir un site web opérationnel. Le problème que je rencontre est que les variables PHP ne seront pas sauvegardées dans le fichier de sortie. J'utilise la commande suivante:Créer un script shell bash qui peut créer un programme PHP

echo "<?php 
header('Content-Type: text/xml'); 
require_once '/var/www/osbs/PHPAPI/account.php'; 
require_once '/var/www/osbs/zang/library/Zang.php'; 
$To = $_POST['subject']; 
$Body = $_POST['text']; 
# If you want the response decoded into an Array instead of an Object, set 
response_to_array to TRUE, otherwise, leave it as-is 
$response_to_array = false; 
# Now what we need to do is instantiate the library and set the required 
options defined above 
$zang = Zang::getInstance(); 
# This is the best approach to setting multiple options recursively Take note that you cannot set non-existing options 
$zang -> setOptions(array(
'account_sid' => $account_sid, 
'auth_token' => $auth_token, 
'response_to_array' => $response_to_array)); 
?>" | tee /var/www/output.php 

Le fichier output.php est manquant toutes les variables qui commencent par $ pouvez-vous aider les gars?

+0

vous ne voulez pas littéralement coder en dur du code PHP dans votre script bash? Ne devrait-il pas simplement copier des fichiers, et peut-être créer une base de données? – ADyson

+0

vous devez échapper le '$' dans votre script bash avec backslash '\ $' –

+0

ou utiliser des guillemets simples autour de votre code php dans le script bash. –

Répondre

1

La meilleure façon de gérer les problèmes citant ici est d'utiliser un "here-doc":

cat >/var/www/output.php <<"EOF" 
<?php 
header('Content-Type: text/xml'); 
require_once '/var/www/osbs/PHPAPI/account.php'; 
require_once '/var/www/osbs/zang/library/Zang.php'; 
$To = $_POST['subject']; 
$Body = $_POST['text']; 
# If you want the response decoded into an Array instead of an Object, 
# set response_to_array to TRUE, otherwise, leave it as-is 
$response_to_array = false; 
# Now what we need to do is instantiate the library and set the 
# required options defined above 
$zang = Zang::getInstance(); 
# This is the best approach to setting multiple options recursively. 
# Take note that you cannot set non-existing options 
$zang -> setOptions(array(
'account_sid' => $account_sid, 
'auth_token' => $auth_token, 
'response_to_array' => $response_to_array)); 
?> 
EOF 

Il n'y a pas besoin de tee (sauf si vous voulez vraiment vider tout ce genre de choses à la console, ce qui ne semble pas nécessaire) . Citant la chaîne de délimitation (<<"EOF") cite efficacement l'ensemble du document, empêchant l'expansion des variables.

+0

Merci! travaillé comme un charme – fixnode