0

我正在尝试从 git hub 实现以下 chat-html5: https ://github.com/ivanph/Chat-HTML5

我已将所有内容上传到我的 ISP,但我发现 ISP 出于安全原因阻止了 exec。

我打电话的文件是:

<?php
/**
 * Main Script of phpWebSockets
 *
 * Run this file in a shell or windows cmd to start the socket server.
 * Sorry for calling this daemon but the goal is that this server run
 * as daemon in near future.
 *
 * @author Moritz Wutz <moritzwutz@gmail.com>
 * @version 0.1
 * @package phpWebSockets
 */

    ob_implicit_flush(true);

    require 'socket.class.php';
    require 'socketWebSocket.class.php';
    require 'socketWebSocketTrigger.class.php';

    $ip = exec ("ifconfig|grep 'inet:'|grep -v '127.0.0.1' |cut -d: -f2 |awk '{ print $1}'");
    $WebSocket = new socketWebSocket($ip,8000);

?>

有没有其他方法可以做到这一点?所有 Isp 都阻止这个吗?

我能做些什么?

嗨,伙计们感谢您的回复。我收到了脚本开发人员的回复。我已将 $ip 更改为我们网站的 IP 地址。我现在收到以下错误:

--2013-08-13 12:07:01--  http://www.wilsea.com/websockets2/startDaemon.php
Resolving www.wilsea.com... 188.64.188.21
Connecting to www.wilsea.com|188.64.188.21|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2013-08-13 12:07:12 ERROR 500: Internal Server Error.

开发人员说这意味着端口(8000)正在使用中,所以我尝试了 80 - 443 - 8080 但得到了同样的错误。

我已通过电子邮件向 ISP 发送电子邮件,询问 websockets 是否被阻止或者我是否需要打开端口。

其他人有这个问题或对此问题有任何见解吗?

4

3 回答 3

2

有没有其他方法可以做到这一点?

还有systemand shell_exec,但出于同样的原因,我认为它被禁用了。

就像评论中指出的那样,您也可以只提供服务器的静态 IP,而不是让脚本确定它。但是,套接字也有可能被禁用,所以不要把希望寄得太高。

所有 Isp 都阻止这个吗?

大多数托管服务提供商都这样做。显然,托管服务不希望您在 shell 上运行可能重新配置机器的任意命令。

我能做些什么?

获得允许您的付费托管exec。想到 VPS 或专用服务器。

于 2013-08-12T10:27:37.457 回答
0

我可以尝试找到一种方法来检测 PHP 中的良好监听地址以避免这种怪物。(解决方法可能是$ip = '0';)你的下一个问题是:Fatal error: Call to undefined function socket_create() why is my ISP so mean?exec()在共享主机上被阻止是有充分理由的,您将无法使用create_socket().

没有主机会想要在他们的共享服务器上出现这样的东西。您必须拥有自己的系统,但您不希望此代码在其上运行。这是因为您不想在任何地方运行此代码,除非您尝试改进它。但是随后您将改进基于 PHP 的解决方案。那将是可悲的。

如果您真的想使用它,请获取便宜的虚拟服务器。我不推荐它。看起来有人正试图将 PHP 用于其并非旨在完成的任务。如果您在不了解所涉及的问题的情况下走到了这一步,我建议您远离它。如果必须,请在 localhost 上尝试,这样您就不会伤害其他人。

于 2013-08-12T10:59:46.680 回答
0

问题是 ISP 阻止了所有端口。他们现在已经为我打开了端口。

干杯

史蒂夫

于 2013-08-13T14:52:11.960 回答