2010-09-12 34 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');

工作對我來說