在CRON作业中使用时,stream_socket_client()失败

时间:2010-09-12 20:06:14

标签: php cron stream-socket-client

我有一个在浏览器中运行良好的脚本,但在通过CRON运行时失败。

具体来说,脚本使用stream_socket_client()来创建安全套接字,但是当我在浏览器中运行时运行正常时,CRON端会因以下错误而失败:

  

PHP警告:stream_socket_client():无法在第18行的/var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php中启用加密   PHP警告:stream_socket_client():无法连接到/var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php中的ssl://gateway.sandbox.push.apple.com:2195(未知错误)第18行

我使用以下命令来运行CRON:

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

CRON问题有什么原因吗?谁能给我任何关于如何在CRON中运行它的建议?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,发现通过从cron运行相同目录的php,从它运行的命令行运行。这就是cron条目看起来像:

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

答案 1 :(得分:1)

如果从命令行运行该文件,可能会尝试提供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');

为我工作

答案 2 :(得分:0)

我改变了两件事,为我解决了这个问题:

在Plesk for PHP中关闭了安全模式。

稍微修改了我的cron命令:

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