2010-09-12 49 views
1

我有一个脚本在浏览器中运行正常,但是在通过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():无法连接到ssl://gateway.sandbox.push.apple。 com:2195(Unknown error)in /var/www/vhosts/tweetheartsapp.com/httpdocs/API/testSend.php on line 18

我使用下面的命令来运行CRON:

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

是否有任何理由通过cron的问题?任何人都可以给我任何关于如何在CRON中运行的建议吗?

+2

在浏览器中运行的PHP可能使用与cron或控制台(CLI模式)不同的php.ini文件。 “无法启用加密”让我怀疑是否某些php扩展没有在CLI模式下加载。打开一个终端并键入'php -i | grep php.ini'。这将向您展示正在使用的php.ini,并将其与通过浏览器查看'phpinfo()'在浏览器中使用的php.ini进行比较。 – Fanis 2010-09-12 20:13:15

+0

嗨 - 他们都是etc/php.ini – mootymoots 2010-09-12 20:29:09

+0

值得注意的是我通过Plesk使用CRONTAB - 这是否有所作为? – mootymoots 2010-09-12 20:32:52

回答

0

两件事情我已经改变了它解决了这个对我来说:

熄灭安全模式,在Plesk中为PHP。

稍微改变了我的cron命令:

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

我有同样的问题,发现从同一个目录下运行PHP从cron从它的工作的命令行。这是cron项将如下所示:

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');

工作对我来说