我正在尝试从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发了电子邮件,询问网络套接字是否被阻止,或者我是否需要打开端口。
其他人有这个问题或对这个问题有任何见解吗?
有其他方法吗?
还有system
和shell_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