У меня есть следующий сценарий PHP, который изолирует мою проблему:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$code = 0;
$output = array();
exec('"../vendor/bin/PdfGenie" code.rq', $output, $code);
echo $code . "\n";
print_r($output);
В PdfGenie
исполняемый файл читает содержимое code.rq
и пытается создать PDF-документ в том же каталоге.
Когда я запускаю код в своем браузере, я получаю следующее:
11
Array
(
)
И он не создает файл.
Однако, если я подключусь к серверу и выполню php tst.php
(с рутом или без) получаю:
0
Array
(
)
И выходной файл записывается нормально. Кроме того, если я выполню ту же команду ("../vendor/bin/PdfGenie" code.rq
) прямо из ssh, что тоже работает.
Я подозревал, что, возможно, apache запускает PHP-скрипт с другим пользователем, и перепробовал все параметры на эта страница чтобы получить пользователя, которым это может быть, но все они дали мне того же пользователя, с которым я общался, и он работал отлично.
Чем отличается (или как я могу понять, что отличает), когда apache выполняет мой PHP-скрипт, что вызывает этот код ошибки 11?