把php挂在网站上不执行python

mei__you 2018-07-31 01:21:12
php代码是:

<?php
echo "<meta http-equiv='Content-Type'' content='text/html; charset=utf-8'>";
$output=shell_exec("python /var/www/html/calculator/extend/python/shuxingkezhi.py 15 0.25 18");
echo $output;
echo "<br>";
?>

在服务器terminal上运行有输出:
ubuntu@VM-67-115-ubuntu:~$ php test_python.php

php文件地址是:https://www.texfox.com/test_python.php
...全文
292 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mei__you 2018-08-01
  • 打赏
  • 举报
回复
解决了,terminal中运行可以,但是网站上运行失败,变成网页程序之后会造成路径问题,我的程序之中有对路径的需求。
mei__you 2018-07-31
  • 打赏
  • 举报
回复
引用 7 楼 lymdzu 的回复:
[quote=引用 6 楼 mei__you 的回复:]
[quote=引用 4 楼 lymdzu 的回复:]
[quote=引用 2 楼 mei__you 的回复:]
单独echo "草"发现网页支持输出中文,然后用shell_exec执行一个print "hello world"发现能够显示hello world。是不是我那个python程序需要计算,于是直接值为null???

php手册上写了shell_exec方法的返回值,如果执行过程中发生错误或者进程不产生输出,则返回 NULL。出错了肯定打印出来null了。用shell_exec执行一个print "hello world"可以输出说明不是安全模式的问题,那就是php没有权限执行python命令
按照2楼第二种方法修改sudo vim /etc/sudoers 试试。[/quote]
本来想用第二个方法的,但是发现ubuntu上么有sudoers这个文件[/quote]
参照https://www.cnblogs.com/neillee/p/7009621.html试试[/quote]
不行,https://www.texfox.com/info.php执行了echo exec("whoami");获得了使用用户, sudo vi /etc/sudoers增加了www-data ALL=(ALL:ALL) ALL。结果还是没有执行那个文件,而且我把/var/www/html的权限都改了
coding8424 2018-07-31
  • 打赏
  • 举报
回复
引用 6 楼 mei__you 的回复:
[quote=引用 4 楼 lymdzu 的回复:]
[quote=引用 2 楼 mei__you 的回复:]
单独echo "草"发现网页支持输出中文,然后用shell_exec执行一个print "hello world"发现能够显示hello world。是不是我那个python程序需要计算,于是直接值为null???

php手册上写了shell_exec方法的返回值,如果执行过程中发生错误或者进程不产生输出,则返回 NULL。出错了肯定打印出来null了。用shell_exec执行一个print "hello world"可以输出说明不是安全模式的问题,那就是php没有权限执行python命令
按照2楼第二种方法修改sudo vim /etc/sudoers 试试。[/quote]
本来想用第二个方法的,但是发现ubuntu上么有sudoers这个文件[/quote]
参照https://www.cnblogs.com/neillee/p/7009621.html试试
mei__you 2018-07-31
  • 打赏
  • 举报
回复
引用 4 楼 lymdzu 的回复:
[quote=引用 2 楼 mei__you 的回复:]
单独echo "草"发现网页支持输出中文,然后用shell_exec执行一个print "hello world"发现能够显示hello world。是不是我那个python程序需要计算,于是直接值为null???

php手册上写了shell_exec方法的返回值,如果执行过程中发生错误或者进程不产生输出,则返回 NULL。出错了肯定打印出来null了。用shell_exec执行一个print "hello world"可以输出说明不是安全模式的问题,那就是php没有权限执行python命令
按照2楼第二种方法修改sudo vim /etc/sudoers 试试。[/quote]
本来想用第二个方法的,但是发现ubuntu上么有sudoers这个文件
mei__you 2018-07-31
  • 打赏
  • 举报
回复
代码改为了
<?php
$output = shell_exec('python python/shuxingkezhi.py 15 0.25 18');
echo $output;
$output = shell_exec('python test.py');
echo $output;
?>
其中test.py代码为:
# -*- coding: utf-8 -*-
print "草"
本来应该输出两个草的,但是只输出了一个草,在远程服务器terminal上 php test_python.php时,能输出两个草
coding8424 2018-07-31
  • 打赏
  • 举报
回复
引用 2 楼 mei__you 的回复:
单独echo "草"发现网页支持输出中文,然后用shell_exec执行一个print "hello world"发现能够显示hello world。是不是我那个python程序需要计算,于是直接值为null???

php手册上写了shell_exec方法的返回值,如果执行过程中发生错误或者进程不产生输出,则返回 NULL。出错了肯定打印出来null了。用shell_exec执行一个print "hello world"可以输出说明不是安全模式的问题,那就是php没有权限执行python命令
按照2楼第二种方法修改sudo vim /etc/sudoers 试试。
xuzuning 2018-07-31
  • 打赏
  • 举报
回复

有问题吗?
如有请说明
mei__you 2018-07-31
  • 打赏
  • 举报
回复
单独echo "草"发现网页支持输出中文,然后用shell_exec执行一个print "hello world"发现能够显示hello world。是不是我那个python程序需要计算,于是直接值为null???
coding8424 2018-07-31
  • 打赏
  • 举报
回复
1.查看php日志,如果php日志报如下错误:

Fatal error: Directive 'safe_mode' is no longer available in PHP in Unknown on line 0

则是php开启了安全模式,shell_exec不能再安全模式下运行,修改php.ini 文件 safe_mode = Off 关闭安全模式。
2.如果php没有上述错误日志,查看apache或nginx日志,如果类似有如下错误:

sudo: no tty present and no askpass program specified

则是php当前运行的用户和组没有执行python的权限,需要把php运行的用户加入到/etc/sudoers文件中,在php文件中执行echo exec("whoami"); 输出php执行时的用户名,例如用户名是test,sudo vim /etc/sudoers 在文件中添加 test ALL=(ALL) ALL ,保存退出,然后再执行php试一下。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧