user1943442
user1943442

Reputation: 198

String in PHP excludes $variable

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

Answers (1)

Matteo Gobbi
Matteo Gobbi

Reputation: 17717

For special characters (which can be interpreted as language syntax) you should use the backslash \ and so \$uri

Upvotes: 1

Related Questions