Unix `at` команда через PHP

Вот мой код для создания нового at работа...
system('echo \'php -f /path/to/my/php/file.php\' | at 1700');

Я думал, что это будет просто и будет работать, но, увы, ничего не происходит!

Когда я бегу echo \'php -f /path/to/my/php/file.php\' | at 1700 через ssh все работает как положено.

Это проблема с разрешениями? Т.е. PHP не позволяет создавать новые at рабочие места?

1 ответ

Решение

Просто к вашему сведению, вы должны убедиться, что вам разрешено выполнять системные команды из ваших PHP-скриптов.

На многих серверах эта функция отключена.

Однако, если вы хотите включить это снова, я думаю, что вы можете сделать это в файле php.ini, вам придется отключить safe_mode.

При разрешении передачи пользовательских данных в эту функцию используйте escapeshellarg() или escapeshellcmd(), чтобы гарантировать, что пользователи не смогут обмануть систему в выполнении произвольных команд.

Если программа запускается с этой функцией, чтобы она продолжала работать в фоновом режиме, выходные данные программы должны быть перенаправлены в файл или другой поток вывода. В противном случае PHP будет зависать до тех пор, пока не закончится выполнение программы.

Примечание. Когда включен безопасный режим, вы можете запускать файлы только в пределах safe_mode_exec_dir. По практическим причинам в настоящее время запрещено иметь.. компоненты на пути к исполняемому файлу.

Другие вопросы по тегам