【问题标题】:Allowing Perl Scripts run by Apache to use system()允许 Apache 运行的 Perl 脚本使用 system()
【发布时间】:2011-05-12 01:29:31
【问题描述】:

我有一个 perl soap 服务,我用它来汇集不同用户的数据。该服务运行良好,但是我想运行“sort -u file1 file2 > file1”以将收集的数据与服务器上已有的数据合并。我希望 perl 脚本在完成任务后调用系统函数

这是为 Apache 或其他设置正确权限的问题吗?

目录列表:

var/www/script.pl
var/www/file1
var/www/file1
var/www/index.php

任何帮助都会很棒。谢谢

【问题讨论】:

  • @Prix 文件为 .csv 格式。我不反对使用其他东西,只是那种 -u 做得很好。
  • @Prix 我真正感兴趣的功能是 sort -u,将两个文件合二为一并省略重复项。想法?

标签: linux perl apache soap system


【解决方案1】:
sort -u file1 file2 > file1

不会按照你说的去做。你有没有从命令行尝试过?

运行该命令后,file1 将不包含 file1 中的任何内容,因为重定向会在 sort 对其采取行动之前破坏 file1。

sort -u file1 file2 >file3; mv file3 file1

您似乎想使用system(),您尝试时发生了什么?您收到任何错误消息吗?

【讨论】:

  • 另一种方法是使用-o 参数:“sort -o file1 file1 file2”。这将输出到 file1,但仅在对 file1 和 file2 进行排序之后。这是一个相对不为人知的技巧。
  • 问题不在于命令。该命令没有被执行,所以这不是问题
【解决方案2】:

不,这是为包含您要写入的文件的目录设置正确权限的问题。

找出 Web 服务器进程在哪个用户 ID/组 ID 下运行(例如,通过查看带有 /bin/ps -AH -o user,group,cmd 的进程表),然后参考 Controlling Access to Files in The Linux Cookbook

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多