繁体   English   中英

从PHP执行python脚本以打开套接字

[英]Executing a python script from PHP to open a socket

我有一个python脚本chatserver.py,其中包括: -

#!/usr/bin/python
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
<SNIP>
reactor.listenTCP(3800, factory)
print "Server Started"
reactor.run()

这将在端口3800上打开一个套接字,如果我从SSH开始工作,但我想检查开放端口,如果它是关闭的,请重新打开使用PHP,但我似乎无法让python脚本执行。

这是我目前通过PHP调用它的方式

function serverCheck() {
   $host = "MYHOST";
   $port = 3800;
   $connection = @fsockopen($host, $port);

   if ( !is_resource($connection) ) { // port not open
       exec('/usr/bin/python PATH_TO_FILE/chatserver.py 2>&1');

    if($connection)
       fclose($connection);
}

我已经尝试了很多我在搜索中找到的东西,但我似乎无法让文件执行。

看起来像是一个权限问题。 chatserver.py因为它需要root用户来运行它。

不要只是chmod 777 chatserver.py 这很危险。

我喜欢的方式是为这些管理任务创建一个组:

groupadd chatserver

然后将自己添加到该组:

usermod -a -G chatserver willroberts

然后将chatserver.py更改为该组所有:

chown root:chatserver chatserver.py

当您的用户运行php时,它将具有正确的组成员身份以运行py文件。 此方法为更多“聊天服务器”可执行文件提供了更大的灵活性。 如果您有兴趣, 阅读以下内容: https//wiki.archlinux.org/index.php/Users_and_Groupshttp://www.tldp.org/LDP/intro-linux/html/sect_03_04.html

问题是固定的:)

最后是shebang:| 我知道......我觉得自己很蠢!

应该是#!/ usr / bin / python但是出于某种原因我已经通过各种测试改变了它!

谢谢你的帮助。 非常感激!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM