【问题标题】:exec command not working in php but works in terminal/puttyexec 命令在 php 中不起作用,但在终端/putty 中起作用
【发布时间】:2014-04-01 15:08:32
【问题描述】:

我正在尝试通过 php exec 运行 convert 'sample_(2).pdf[1]' 'sample.jpg',如下所示

> exec(" convert 'sample_(2).pdf[1]' 'sample.jpg' ");

但它在 php 中不起作用,但在终端中效果很好。我还尝试了下面的代码来检查是否 exec 正在使用 php。

echo exec('whoami'); //它正在工作并给我结果

exec("cp 'sample_(2).pdf' sample2.pdf");

//它不工作。

但是所有命令都在终端中运行。任何想法都会帮助我。这两天我一直在摸不着头脑。

编辑

我让它工作了。我的文件路径有错误。

【问题讨论】:

  • 修复你对 cp 样本的引用,如果它不起作用,'' ' ' ' '' 等等都是可怕的。其次,运行 apache 的用户可能会禁用 exec。
  • 我正在使用那些“”等来转义特殊字符。从终端一切正常。并且用户在腻子和连接凭据中都是相同的
  • 是的........ 在您使用 \ 命令行正确转义后,不要管理 exec 命令exec("cp $source $destination"); 外部的特殊字符。并从终端运行脚本以登录用户的权限运行它,通过 Web 服务器运行它与您的 apache 用户(在 RH 上的 deb/httpd 上的 www-data)运行它通过 ftp 运行它作为您的 ftp 用户运行它.无论如何,Ftp 用户通常都无法执行脚本
  • 我搞定了。我的文件路径有错误。

标签: php pdf imagemagick exec


【解决方案1】:

我猜网络服务器没有权限写入你要写入的文件夹。检查您的网络服务器的文件夹权限(可能是“www-data”)。

【讨论】:

  • 我尝试了文件和文件夹的 777 权限
  • 尝试 passthru("convert 'sample_(2).pdf[1]' 'sample.jpg'");看看它显示了什么错误。因为 exec 不显示没有附加参数的结果。
  • passthru("convert 'sample_(2).pdf[1]' 'sample.jpg' 2>&1");是正确的方法。因为 passthru 只显示 STDOUT。
猜你喜欢
  • 2023-02-11
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2015-03-14
相关资源
最近更新 更多