【问题标题】:Alternate to PHP exec() function替代 PHP exec() 函数
【发布时间】:2011-11-25 18:38:41
【问题描述】:

目前我正在使用:

exec("zcat $filename", $output)

要解压.Z 类型的文件,但不幸的是我的托管公司现已禁用此功能。

有解决办法吗?

$pathtofile = "filename.lis.Z";
exec("zcat $pathtofile", $output);

【问题讨论】:

  • 不幸的是,compress 格式 .Z 不被 zlib 本身理解,所以 PHPs gzuncompress() 将无法工作。如果您不能再使用exec,您将不得不调整您的文件源。从现在开始使用gzip
  • 不幸的是,我获取的文件是 .Z 格式的。除非有一种自动将它们转换为 gzip 格式的方法,否则我必须坚持使用 .Z 格式。你知道任何允许 exec() 的主机吗?
  • 嗯,几乎所有专业主机都使用 suexec 而不是安全模式解决方法。请注意,您的 zcat 是支持 .Z 的特殊版本;您可能需要重新安装或使用uncompress -c $filename。还要记住escapeshellarg()这里。
  • 我没有使用 escapeshellarg() 但 php.net 帮助文件说“转义一个字符串以用作 shell 参数”但问题是我认为为了使用它我仍然需要系统() 或 exec() 但我的主机已阻止两者。你知道有哪些服务提供商不会让我做这样的噩梦吗?
  • @mario 如何使用 suexec?我的托管公司告诉我他们已经安装了 suexec 但我仍然不能使用 exec() 函数所以想知道它现在是如何工作的?

标签: php exec zcat


【解决方案1】:

这样做

echo ini_get("disable_functions");

了解您是否能够使用以下方法之一:

system(); exec(); passthru(); shell_exec();

但如果是共享主机,以上所有内容肯定会被阻止,您将不得不寻找替代方案

【讨论】:

  • show_source、system、shell_exec、passthru、exec、popen、proc_open、chmod、mkdir、chdir、allow_url_fopen、rmdir
【解决方案2】:

.Z 文件为LZW compression。如果您无法在主机上运行 shell 命令,您可以使用 LZW PHP 库。这里有两个:

【讨论】:

    【解决方案3】:
    system($shell_command, $response_var);
    

    所以在你的情况下:

    system("zcat $filename", $output);
    

    【讨论】:

    • 我几乎可以打赌他们也阻止了这个和 passthru()
    • 我确定他们做得太过分了,只是放弃了替代方法
    • 他们也禁用了 system()
    • 是的,数字,你需要打电话给他们并说明你的情况。如果他们对为您重新配置任何东西不感兴趣,那么您需要切换主机。
    • 好吧,我试着打电话给他们并没有帮助,因为他们对重新配置不感兴趣。关于哪个主机可能允许使用 exec() 的任何建议?
    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2011-02-22
    相关资源
    最近更新 更多