Intereting Posts
Веб-страница PHP не запускает команду unix даже после обновления sudoers Ошибки в Unknown on Line 0 после обновления PHP Создание динамического списка ul li из DB Создание связанных или похожих сообщений с использованием PHP и MySQL как сделать валидацию с помощью ajax Laravel 5.3 Magento: получить цену продукта от группы клиентов Должен ли я отказаться от Adobe Flash для HTML5 и <canvas>? Использование пароля для существующего пароля Взаимодействие приложений Android с сетью Добавьте два часа к дате в течение заданных часов, которые переносятся на следующий таймфрейм Поиск файла PHP (во время выполнения), в котором был определен класс Получить Nginx для вызова файла PHP для обработки 404 ошибок в php-fpm Regex для соответствия ограничителей верхнего уровня в многомерной строке PHP MVC / ORM Framework, которые являются Hyper PHP (HipHop) Ready Добавление нескольких полей ввода на основе динамического значения в PHP

Запуск php-скрипта с файлом .bat

Мне нужно запускать php-скрипт в полночь каждую ночь на моем сервере. В linux-системе я создал работу cron, но я застрял в системе Windows.

Я знаю, что мне нужно настроить задачу, используя планировщик задач Windows, и что задача должна будет запускать файл .bat, который, в свою очередь, запустит php-файл, но я застрял, пытаясь записать файл .bat.

У меня в настоящее время есть:

@echo off REM this command runs the nightly cron job start "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php 

Но когда я пытаюсь вручную запустить .bat-файл, чтобы проверить его, я получаю предупреждение о Windows

«Windows не может найти« -f ». Убедитесь, что вы правильно набрали имя, а затем повторите попытку.

Что я пропустил?

Команда START дополнительно принимает заголовок для созданного окна в качестве первого аргумента; в этом случае он считает, что C:\Program Files (x86)\PHP\v5.3\php.exe – это заголовок для отображения, а -f (второй аргумент) – исполняемый файл, который вы хотите запустить.

Поэтому вы можете исправить это, указав заголовок заполнителя, например

 start "email reminder task" "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php 

Или, желательно, вы можете полностью отключить команду START (вы не используете какие-либо уникальные возможности) и просто запустите PHP напрямую:

 "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php 

На самом деле вам даже не нужен пакетный файл. Вы можете запустить php-скрипт из планировщика задач.

Просто позвольте планировщику задач запустить php.exe и установить расположение php-файла в качестве аргумента задачи.

Могу ли я предложить небольшое изменение.

 echo off REM This adds the folder containing php.exe to the path PATH=%PATH%;C:\Program Files (x86)\PHP\v5.3 REM Change Directory to the folder containing your script CD C:\inetpub\wwwroot\sitename\crons REM Execute php reminder-email.php 

PS. Помещение Apache, MySQL или PHP в Program Files – плохая идея. Не используйте в своих именах папки Windows с пробелами.

К сожалению, это заняло около 10 часов, чтобы понять. Некоторые протоколы, такие как WinRM и PSEXEC, должны передавать зарегистрированную учетную запись пользователя независимо от предоставленных учетных данных (это или PHP переопределяет все, что вы вводите). Во всяком случае, чтобы получить PSEXEC, WinRM или просто отпустить пакетные файлы, которые подключаются к удаленным компьютерам, вам нужно будет изменить запуск IIS как учетной записи пользователю с правами на эти ресурсы (учетную запись службы). Я понимаю, что это огромная дыра в безопасности, но это по дизайну. PHP является безопасным, так что его нельзя легко взломать, вы должны переопределить свою безопасность, указав прогон как учетную запись. Не то же самое, что и ваша учетная запись пула приложений, хотя ваши учетные данные IIS могут использовать вашу учетную запись пула приложений.

Попробуйте таких парней!

 cd E: \ xampp \ htdocs \ my-project
 E:
 Расписание php artisan: запустить