linux php脚本来执行python脚本来写一些文件

jgzswidk  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(130)

我有一个php脚本,它调用一个python脚本,python脚本反过来负责将一些文件写入磁盘。
如果我通过在web浏览器中输入url来执行php脚本,它可以执行几个与文件系统相关的任务:

  • 它可以创建一个目录
  • 它能够chmod目录

但是它不能执行python脚本来创建和写入其他文件。
奇怪的是,如果我以www-data手动运行python脚本:

user@host $ sudo su www-data
passwd for sudo:
$ whoami
www-data
$ python my_script.py

字符串
它就像一个魅力。
我假设通过浏览器运行脚本时的用户是www-data。那么,为什么控制台中的结果会有所不同呢?

已解决:

Python脚本首先从我的存储库导入一些模块,这些模块通过登录控制台上的.bashrc.bash_profile附加到路径中。用户www-data无法从浏览器访问这些模块。所以把这个添加到python脚本中就解决了这个问题:

import sys
sys.path.insert(0, 'path_to_my_modules')


解决了
我为这个问题道歉。它没有为用户带来所有必要的信息,以找到解决方案。我想这个问题是如此广泛,以至于我很难开始思考它的根源在哪里。
我缺乏良好的调试技术来查看错误是什么。我注解掉了所有的python脚本,从一个简单的print 'here'开始。一行接一行地取消注解向我展示了它不再打印任何内容的地方(当时错误很明显)。

amrnrhlw

amrnrhlw1#

首先,不要假设用户是www-data。您应该从运行PHP脚本的whoami获取输出,以查看它是否为www-data。此外,您需要确保脚本对用户具有+x或execute权限。
你应该read about execute permissions
您需要在PHP脚本中使用chown将所有权更改为www-data用户:

sudo chown www-data:www-data yourscript.php

字符串
然后你需要给予用户执行权限:

sudo chmod u+x yourscript.php

相关问题