Я разрываю волосы, пытаясь понять, почему это может не работать, когда оно работает при выполнении из командной строки. Я отправляю анимацию POV-Ray пользователю после выполнения рендеринга и компиляции фреймов в GIF с помощью ImageMagick. У меня есть письмо, которое отправляется через mutt sleep в течение часа, чтобы оно позволяло скомпилировать анимацию пользователя. (Я изменил его на 120 секунд, так что мне не нужно ждать часа, чтобы устранить неполадки. В этом отношении я также сделал анимацию только 3 кадра, пока не выясню проблему.)Mutt email не отправляет электронную почту с помощью shell_exec
Новый файл bash, animation_done_bash.sh, создается каждый раз, когда пользователь нажимает анимацию на моем сайте, которая, в свою очередь, создает новую папку, в которой хранятся фреймы для анимации и с анимацией_done_bash.sh. Чтобы страница PHP перейти на следующую страницу, файл bash выполняется в dev null. Я уже тестировал, если это проблема в командной строке, и она работает там, поэтому я действительно не знаю, в чем проблема.
Ниже приведен код и выход (я повторил это выход на мою страницу PHP, чтобы увидеть, что было не так), что производится, который выполняется с shell_exec:
$animation_done_email = "#!/usr/bin/bash \nsleep 120; mutt -s \"Animation Finished\" -a animation.gif -- ".$email." <email.txt;";
/*Creates new animation_done_bash each time user hits animate*/
$directory_bash = "./User_Files/Animation/".$location."/";
$filename_bash = 'animation_done_bash.sh';
$handler_bash = fopen($directory_bash.$filename_bash, "w");
fwrite($handler_bash, $animation_done_email);
fclose($handler_bash);
/*Need to change the permissions on bash file so it can execute*/
chmod($directory_bash."/animation_done_bash.sh", 0777);
$command_5 = 'cd /home/ouraccount/public_html/User_Files/Animation/'.$location.'/; bash animation_done_bash.sh > /dev/null 2>/dev/null &';
$shellOutput = shell_exec($command_5);
Где $ электронная почта электронной почты пользователя и $ location - это папка, в которой хранятся кадры. email.txt хранится в одной папке.
Выход: cd/home/ouraccount/public_html/User_Files/Animation/ani_51 /; bash animation_done_bash.sh>/dev/null 2>/dev/null &
Любое руководство было бы высоко оценено. Благодаря!
Я думаю, вы идете по нему не так, просто добавьте команду в сценарий bash, который отправляет изображение после его рендеринга. – dtech
Вот что я пытался сделать. Я не мог понять, как это распознать, когда это было сделано, поэтому я просто попросил отправить спам вместо этого. Что я должен использовать вместо mutt, если это не так? Я просто смущен, почему все это работает, когда я выполняю его из оболочки, но не тогда, когда он выполняется на PHP, даже если я изменил разрешения. – Dominick
Возможно, потому, что PHP останавливается или пользователь неверен или по какой-то другой причине. Слишком много возможностей, это просто неверный прецедент для PHP. Ниже я расскажу о фрагменте примера. Это проблема XY: http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – dtech