shell_exec, imagemagick convert не похоже на доллары - PullRequest
0 голосов
/ 21 января 2012

Это работает:

shell_exec('convert Q39.pdf Q39.png');

В то время как это не так:

$id = 39; shell_exec('convert Q$id.pdf Q$id.png');

Внутри другого shell_exec с другой командой (pdflatex) оно работает.Каким-то образом $ id игнорируется, поэтому файл не найден, поэтому:

$id = 39; shell_exec('convert Q39.pdf Q$id.png');

Я получаю правильный файл с именем Q.png.

Есть идеи, как мне решить эту проблему?

Заранее спасибо.

1 Ответ

1 голос
/ 21 января 2012

Чтобы использовать переменные в строковых литералах, вы должны либо использовать двойные кавычки:

$id = 39; shell_exec("convert Q$id.pdf Q$id.png");

или объединить их:

$id = 39; shell_exec('convert Q'.$id.'.pdf Q'.$id.'.png');

Я бы порекомендовал второй способ, так как он более читабелен при использовании подсветки синтаксиса.

Или даже лучше, убедитесь, что это всегда десятичная дробь:

$id = 39; shell_exec(sprintf('convert Q%1$d.pdf Q%1$d.png', $id));

Это также покажет вам, какие переменные используются для построения команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...