mootymoots
mootymoots

Reputation: 4575

stream_socket_client() fails when using in CRON job

I have a script that runs fine in the browser, however fails when run through CRON.

Specifically, the script is using stream_socket_client() to create a secure socket, however despite running fine when I run through the browser, the CRON side fails with the following errors:

PHP Warning: stream_socket_client(): Failed to enable crypto in /var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php on line 18 PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php on line 18

I am using the following command to run the CRON:

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

Is there any reason for the problem via CRON? Can anyone give me any advice on how I can run this in CRON?

Upvotes: 1

Views: 2235

Answers (3)

ron
ron

Reputation: 826

if you running the file from the command line maybe try to give the full path to the ck.pem file

change the line : stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');

to

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

work for me

Upvotes: 1

bvs
bvs

Reputation: 1087

I was having the same problem and found that by running php from the same directory from cron as from the command line that it worked. That is the cron entry would look like:

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

Upvotes: 1

mootymoots
mootymoots

Reputation: 4575

Two things I have changed which resolved this for me:

Turned off safe mode in Plesk for PHP.

Slightly altered my cron command to:

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

Upvotes: 0

Related Questions