Reputation: 198
Not sure how to properly describe what I want but after lots of googling I need some help.
I'm using PHP to run some shell commands, one of those shell commands creates a file with some configuration information within it from a string. This config information has a part that has the string "$uri" so obviously if I I enclose it in double quotes " it tries to call the variable which doesn't exist. My problem is when I call it in single quotes it's omitting the $uri word entirely... is this normal behavior?
I'll include an example, I'm writing a nginx serverblock file so it's as follows:
$nginxhost = 'server {
listen 80;
root /var/www/dev2.host.dev/public_html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name dev2.host.dev;
include hhvm.conf;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}';
and then executing through ssh2:
"echo \"$passsowrd\" | sudo -S sh -c 'echo \"".$nginxhost."\" >> /etc/nginx/sites-available/dev2.host.dev';";
Should I wrap the entire $nginxhost with {}? or just the $uri?
Upvotes: 0
Views: 61
Reputation: 17717
For special characters (which can be interpreted as language syntax) you should use the backslash \
and so \$uri
Upvotes: 1