gpt4 book ai didi

php脚本执行python脚本写入一些文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:42 24 4
gpt4 key购买 nike

我有一个调用 python 脚本的 php 脚本,该脚本又负责将一些文件写入磁盘。

如果我通过在网络浏览器中输入它的 url 来执行 php 脚本,它可以执行几个文件系统相关的任务:

  • 它能够创建一个目录
  • 它能够修改目录

但它无法执行创建和写入其他文件的 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' 开始。一行一行取消注释,让我看到它不再打印任何东西的地方(那时错误很明显)。

最佳答案

首先,不要假设用户是www-data。您应该从从 PHP 脚本运行的 whoami 中获取输出,以查看它是否是 www-data。此外,您需要确保您的脚本具有用户的 +x 或执行权限。

你应该read about execute permissions .

您需要在 PHP 脚本上使用 chown 将所有权更改为 www-data 用户:

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

然后你需要给用户执行权限:

sudo chmod u+x yourscript.php

关于php脚本执行python脚本写入一些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com