2010-09-12 2 views
1

У меня есть сценарий, который отлично работает в браузере, однако сбой при запуске через CRON.stream_socket_client() терпит неудачу при использовании в задании CRON

В частности, скрипт использует stream_socket_client() для создания защищенного сокета, однако, несмотря на отлично работает, когда я бегу через браузер, сторона CRON выдает следующие ошибки:

PHP Warning: stream_socket_client(): Не удалось включить криптографию в /var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php в строке 18 PHP Warning: stream_socket_client(): невозможно подключиться к ssl: //gateway.sandbox.push.apple. com: 2195 (Неизвестная ошибка) в /var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php в строке 18

Я использую следующую команду для запуска CRON:

0-59 * * * * php -q httpdocs/API/testSend.php 

Есть ли причина проблем через CRON? Может ли кто-нибудь дать мне какие-либо советы о том, как я могу запустить это в CRON?

+2

PHP, работающий в браузере, может использовать другой файл php.ini, чем из cron или консоли (режим CLI). «Не удалось включить криптографию» заставляет меня задаться вопросом, не расширяет ли расширение php в режиме CLI. Откройте терминал и введите 'php -i | grep php.ini'. Это покажет вам используемый php.ini и сравнивает его с тем, который используется в браузере, просматривая 'phpinfo()' через браузер. – Fanis

+0

Привет - Они оба и т. Д./Php.ini – mootymoots

+0

Стоит отметить, что я использую CRONTAB через Plesk - это имеет значение? – mootymoots

ответ

0

Две вещи, которые я изменившие, которые разрешены для меня это:

Выключено безопасный режим в Plesk для PHP.

Слегка изменили мою команду хрон к:

0-59 * * * * /usr/bin/php -q httpdocs/API/testSend.php 
1

У меня был такой же проблемой и обнаружили, что, запустив PHP из той же директории, из хрон, как из командной строки, что она работала. То есть запись хрон будет выглядеть следующим образом:

0-59 * * * * cd <target directory>; /usr/bin/php -q httpdocs/API/testSend.php 
0

, если запустить файл из командной строки, может быть, попытаться дать полный путь к файлу ck.pem

изменить строку: stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');

к

stream_context_set_option($ctx, 'ssl', 'local_cert', '/path/to/your/file/ck.pem');

работа для меня