【问题标题】:shell_exec not executing sh file for inkscape commandshell_exec 没有为 inkscape 命令执行 sh 文件
【发布时间】:2014-04-22 12:03:54
【问题描述】:

一个.sh

#! bin/bash
command="cp 357.svg 000.svg"
echo "Executing Command";
exec $command;

通过执行sh one.sh 从shell 运行完美,甚至在php 中shell_exec("sh one.sh"); 也可以正常工作。

两个.sh

#! bin/bash
command="/usr/bin/inkscape -f 357.svg -e 357.png"
echo "Executing Command";
exec $command;

来自 shell sh two.sh 工作正常

但使用 php shell_exec("sh two.sh") 不执行

谁能告诉它为什么没有执行?

【问题讨论】:

    标签: php linux bash shell-exec inkscape


    【解决方案1】:

    试试:

    echo shell_exec("sh two.sh 2>&1;")
    

    看看输出是什么,也许它会给你一个权限被拒绝的错误。 也许还值得检查您正在与哪个用户一起运行(可能类似于 www-data)

    【讨论】:

    • 警告:无法创建配置文件目录(权限被拒绝)消息:无法创建配置文件目录 /var/www/.config/inkscape。消息:Inkscape 将使用默认设置运行,并且不会保存新设置。 (inkscape:..):libgnomevfs-WARNING:Unable to create ~/.gnome2 directory:Permission denied 紧急保存激活!紧急保存完成。 Inkscape 现在将关闭。如果您可以重现此崩溃,消息:错误:Inkscape 遇到内部错误,现在将关闭。分段错误
    • 我不知道您是否能够更改服务器上的内容,但消息很明确:inkscape 想要创建一个配置目录,但不允许这样做。测试非常快速和肮脏:(sudo)chmod 0777 /var/www/.config/inkscape 或者:设置正确的目录权限,以便您的用户(假设 www-data)可以在该目录中写入
    • @klapvee 谢谢。从 PHP 脚本运行它时,我收到了相同的 Inkscape 错误消息。然后,我以 www-data 身份登录并执行完全相同的命令,产生了相同的警告,但它起作用了!我得出结论,丢失的 .gnome2 目录可能不是问题。无论出于何种原因,添加它实际上确实修复了 inkscape 崩溃。 (有关信息:默认为 /var/www/.gnome2。为确保您拥有正确的路径,请检查 strace inkscape --with-your-args 的输出。)
    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 2019-04-01
    • 2017-07-15
    • 1970-01-01
    • 2019-07-01
    • 2015-06-07
    • 2010-11-16
    • 2021-05-22
    相关资源
    最近更新 更多