PHP执行程序被ISP阻止


PHP exec is blocked by ISP

我正在尝试从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);
?>

有其他方法吗?所有的以色列国防军都阻止了吗?

我能做什么?

嗨,伙计们感谢您的回复。我收到了脚本开发人员的回复。我已将$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发了电子邮件,询问网络套接字是否被阻止,或者我是否需要打开端口。

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

有其他方法吗?

还有systemshell_exec,但我认为出于同样的原因会禁用它们。

正如评论中所指出的,你也可以只提供服务器的静态IP,而不是由脚本来决定。然而,套接字也可能被禁用,所以不要把希望太高。

所有的以色列国防军都阻止了吗?

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

我能做什么?

获得允许您访问exec的付费主机。脑海中浮现的是VPS或专用服务器。

我可以尝试找到一种方法来检测PHP中的一个好的侦听地址,以避免这种麻烦。(解决方法可能是$ip = '0';)您的下一个问题是:Fatal error: Call to undefined function socket_create() why is my ISP so mean?exec()在共享主机上被阻止是有充分理由的,并且不允许您使用create_socket()创建套接字。

没有一个宿主会希望在他们的共享服务器上有这样的东西。你必须拥有自己的系统,但你不希望这些代码在上面运行。这是因为你不想在任何地方运行这些代码,除非你试图改进它。但你会在一个基于PHP的解决方案上改进。而那将是可悲的

如果你真的想使用这个,就买一个便宜的虚拟服务器。我不推荐它。看起来有人试图使用PHP来完成一项它不适合做的任务。如果你到目前为止还不了解所涉及的问题,我建议你远离它。如果必须的话,请在localhost上尝试它,这样你就不会伤害其他人。

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

干杯

StevenW