我有一个在浏览器中运行良好的脚本,但在通过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中运行它的建议?
答案 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