0

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?

2
  • 1
    Could you please include a minimal coding example? One with which we can reproduce the problem? Commented May 21, 2014 at 21:23
  • Try $param = "{$uri}"; Commented May 21, 2014 at 21:23

1 Answer 1

1

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

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.