【问题标题】:Python part of script does not start from webpage脚本的 Python 部分不是从网页开始的
【发布时间】:2012-08-22 15:04:35
【问题描述】:

我在 linux NAS 上有一个网页,运行着 webserver 和 php。 我想从服务器启动一个脚本,将数据写入数据库。

当我在 new69.php(有问题的网站)上时 我有 例如:

$uptime = exec('uptime');echo $uptime; (这行得通)

所以我有一个连接。

然后我使用 if 语句:

if (isset($_POST['verzenden'])) {
 $output1 = exec('whoami');
 exec('/share/MD0_DATA/Qweb/sqlite/AllesNaardDB.sh');
 } else {

    echo "Nog lekker niets gedaan.";

Whoami 在 is statememt 中给出用户名“httpdusr”, 所以 if 语句被到达并起作用。

现在是我做的 exec 语句:

它必须执行 AllesNaardDB.sh 其中包含:

cd /share/MD0_DATA/Qweb/sqlite
echo "Wasmachine"
python2.6 wasm_util_sql.py [param]
echo "alles gegeven"
exit 0

什么都没有显示或完成。

但是当我这样做时:

$output = exec('/share/MD0_DATA/Qweb/AllesNaardDB.sh');
echo "<pre> $output </pre>";

我在变量 $output 中得到脚本的 als 行, “alles gegeven”

起初我认为这可能与权利有关。 所以我(切换用户)su到“httpdusr”并且putty中的脚本执行得很好。

我还用“ls -l”制作了另一个脚本 ff.sh 来执行,一切正常。 我也很害怕 通路(), 系统(), 壳执行。 唯一的改进是使用 system() 和 passthru(),“回声“Wasmachine”” 出现在网站上。

我不明白为什么 python 作业没有开始?

我做了一些进一步的工作,但是否有一些依赖于用户的 sqlite3 命令?

就像我可以以管理员身份对数据库执行一些写入操作,但不能以 httpdusr 身份执行?

【问题讨论】:

  • 可能是没有找到python2.6命令。尝试使用绝对路径并判断这是否有效。
  • 您是否直接从 shell 尝试了相同的绝对路径?
  • 是的,我做了完整的路径。我直接从网页上运行了一个 python 脚本。这也奏效了。所以只有从 al shell 脚本它不起作用??
  • 对不起。你有一个奇怪的效果,我无法帮助你。
  • 我知道,但感谢您的努力。

标签: php python shell webpage


【解决方案1】:

尝试将#!/bin/sh 添加到脚本顶部并确保它是chmod a+x

【讨论】:

  • 我添加了行(不存在,好电话)和 chmod/chown 脚本。但它没有帮助。
  • 如果你在 linux 上,尝试从命令行运行它,看看它是否输出任何东西:php -r "echo exec('/share/MD0_DATA/Qweb/AllesNaardDB.sh');"
  • 全局找不到命令 php。然后我用完整路径试了一下,这行得通!很有趣!!
【解决方案2】:

这是一个在 python 脚本中带有路径的问题,它正在写入数据库。 它从网页启动时使用不同的路径(MD0_DATA/Qweb/),然后从 shell 脚本启动(MD0_DATA/Qweb/sqlite)

*我还没有解决问题,但理解它。 感谢大家的努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多