标签: exec

即使在更新后的sudoers之后,PHP网页也不会启动unix命令

基本上我试图从php网页重启服务.

这是代码:

<?php
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
?>
Run Code Online (Sandbox Code Playgroud)

但是/var/log/httpd/error_log,我知道了

无法改为sudoers gid:不允许操作

在/ var/log/messages中,我明白了

9月22日15:01:56 ri kernel:audit(1222063316.536:777):avc:被拒绝{getattr} for pid = 4851 comm ="sh"name ="var"dev = dm-0 ino = 114241 scontext = root:system_r :httpd_sys_script_t tcontext = system_u:object_r:var_t tclass = dir
9月22日15:01:56 ri kernel:audit(1222063316.549:778):avc:denied {setrlimit} for pid = 4851 comm ="sudo"scontext = root:system_r: httpd_sys_script_t tcontext = root:system_r:httpd_sys_script_t tclass = process
9月22日15:01:56 ri kernel:audit(1222063316.565:779):avc:拒绝{read} for pid = 4851 comm ="sudo"name ="shadow"dev = dm-0 ino = 379669 scontext = root:system_r:httpd_sys_script_t tcontext = system_u:object_r:shadow_t …

php sudo exec

2
推荐指数
2
解决办法
1万
查看次数

php exec命令 - 相对路径不起作用

如何使用exec命令使用相对路径从php运行外部程序?

 <?php

  exec('program_name ......');

 ?>
Run Code Online (Sandbox Code Playgroud)

仅当program_name.exe与此php脚本位于同一目录中时,此方法才有效.例如

 <?php

  exec('program_name ......');

 ?>
Run Code Online (Sandbox Code Playgroud)

如果php脚本不在'something'目录中,则不起作用.有谁知道如何在exec命令中使用相对路径?谢谢

php exec relative-path

2
推荐指数
1
解决办法
5410
查看次数

MSBuild使用ItemGroup和EXEC命令

我创建了代码片段中显示的ItemGroup.我需要迭代这个ItemGroup并运行EXEC命令 - 也显示在代码片段中.我似乎无法让它发挥作用.代码返回下面显示的错误(注意 - 消息写入2次,这是正确的),但EXEC命令未正确运行.该值未设置; 因此EXEC根本没有执行.我需要EXEC执行两次,或者我在ItemGroup中定义的部分.

错误:加密WebServer appSettings部分加密WebServer connectionStrings部分C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef"""\ gaw\UI"-prov"RSACustomProvider"加密配置部分...找不到配置部分''.

代码链:

<ItemGroup>
    <SectionsToEncrypt Include="Item">
      <Section>appSettings</Section>     
    </SectionsToEncrypt>
    <SectionsToEncrypt Include="Item">     
      <Section>connectionStrings</Section>
    </SectionsToEncrypt>  
  </ItemGroup>

  <Target Name="EncryptWebServerWebConfigSections">   
    <Message Text="Encrypting WebServer %(SectionsToEncrypt.Section) section" />

    <Exec Command="$(AspNetRegIis) -pef &quot;%(SectionsToEncrypt.Section)&quot; &quot;$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)\$(AnythingPastFlavorToBuild)&quot; -prov &quot;$(WebSiteRSACustomProviderName)&quot;"/>
  </Target>
Run Code Online (Sandbox Code Playgroud)

msbuild command exec

2
推荐指数
1
解决办法
2671
查看次数

如何禁用PHP的exec函数打印到shell?

我有以下PHP代码:

exec('curl -X POST http://mysite.com', $output =array());
Run Code Online (Sandbox Code Playgroud)

我的http://mysite.com返回字符串未显示在shell上,但显示以下字符串:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     3    0     3    0     0     19      0 --:--:-- --:--:-- --:--:--     0
Run Code Online (Sandbox Code Playgroud)

我不希望在shell上显示任何内容.如何在使用exec()命令时禁用对shell的引用.还有其他命令吗?

php exec

2
推荐指数
2
解决办法
2125
查看次数

fork()后数组更改值

我正在尝试制作一个简单的shell副本(在C中)用于学习目的.下面的代码部分显示了我目前所处的位置:

#define TRUE ( 1 )
#define NUMBEROFARGUMENTS ( 5 )

void execute(char** input){

    pid_t pid;
    pid = fork();   

    if (pid == 0){
        printf("Spawned foreground process pid: %d\n", getpid());
        execvp(input[0], input);
        _exit(1);
    } else {
        waitpid(pid, NULL, 0);
        printf("Foreground process %d terminated.\n", pid);
    }

}

void check_input(char** input){

    char in[70];
    char *tok_inline;

    gets(in);   
    tok_inline = strtok(in," ");

    int i;
    for(i=0; i < NUMBEROFARGUMENTS; i++){
        input[i] = tok_inline;
        tok_inline = strtok(NULL," ");
    }

}

int main(){

    char* input[NUMBEROFARGUMENTS];

    printf("MiniShell v2.5\n");

    while …
Run Code Online (Sandbox Code Playgroud)

c arrays string fork exec

2
推荐指数
1
解决办法
1097
查看次数

子进程中的execl()没有结束

我写了一个简单的程序来理解execl()的概念.这是我的计划

#include<stdio.h>
#include<unistd.h>

int main()
{
    pid_t pid;
    pid = fork();
    if(pid == 0)
    {
        execl("/bin/sh","sh","-c","ls -l *.c", NULL);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行它时,它会显示扩展名为".c"的文件列表.但是,似乎子进程没有结束,光标一直闪烁.

srico@ubuntu:~/Desktop/c$ -rw-rw-r-- 1 srico srico   84 Jun 30 08:30 cmdacc.c
-rw-rw-r-- 1 srico srico  138 Jul  4 11:08 execfun.c
-rw-rw-r-- 1 srico srico  343 Jul  4 10:27 execvp1.c
-rw-rw-r-- 1 srico srico  167 Jun 23 08:20 filechar.c
-rw-rw-r-- 1 srico srico  195 Jun 23 11:20 fileline.c
-rw-rw-r-- 1 srico srico  203 Jun 27 07:17 filestat.c
-rw-rw-r-- 1 srico …
Run Code Online (Sandbox Code Playgroud)

c exec

2
推荐指数
1
解决办法
2974
查看次数

mkdir在/ tmp目录中失败

我正在尝试在php中创建一个文件夹,并且每个它与/tmp/...路径一起使用时代码类型失败:

exec("mkdir -p /tmp/test/ 2>&1", $output, $return_code);
// $output is empty, $return_code is 0
//mkdir("/tmp/test/"); // Alternative to above

is_dir("/tmp/test/"); // returns true
is_readable("/tmp/test/"); // returns true
Run Code Online (Sandbox Code Playgroud)

但是,如果我检查/tmp-Folder没有这样的目录,并且该文件夹上的所有后续写入或读取操作都会失败,因为该文件夹不存在.权限/tmp是正确的(root:root with 777),我可以sudo -u http mkdir -p /tmp/test没有问题.如果我使用tmp/test例如,代码将运行正常并在php-skript的目录中创建一个文件夹(它位于属于我的文件夹中,而不是http用户......)

任何想法为什么PHP无法创建一个文件夹/tmp/但报告它在那里?

编辑:指定读取和写入操作:这些操作不是来自我自己的脚本,而是来自外部skripts,由php脚本调用以执行不同的任务.一旦所有这些文件成功完成,文件夹就会被压缩并复制到其他地方.

编辑:运行后立即 exec("mkdir -p /tmp/testfolder");

[daishy@littlezombie tmp]$ pwd
/tmp
[daishy@littlezombie tmp]$ ls -al
insgesamt 8
drwxrwxrwt 21 root   root   440  3. Aug 18:56 .
drwxr-xr-x 20 root   root  4096 10. Jun 16:49 …
Run Code Online (Sandbox Code Playgroud)

php exec mkdir

2
推荐指数
1
解决办法
3985
查看次数

在PHP中使用exec命令时可能出现权限问题

我们有一个小型办公室内部网,内置PHP(在Apache服务器上 - 所以WAMP),允许我们在文件服务器上创建项目文件夹.这可以通过使用shell exec xcopy命令和以下开关将一组模板文件夹复制到新位置来实现/e /k /i /c.

我们(公平地)最近升级到运行Windows Server 2008 R2 Standard的新文件服务器.现在,xcopy命令不再适用于PHP.但是,我知道xcopy命令是正确的,因为它可以复制并粘贴到命令提示符(在同一台机器上).

我可以看到没有错误消息,但我认为这是与PHP'用户'相关的某种权限问题,但我不知道究竟是什么或如何解决它.

apache服务器和文件服务器是两台独立的机器.如果它是相关的,apache服务器是32位机器,文件服务器是64位机器,但正如我所说,我可以从32位机器的CLI调用xcopy命令没有问题.

Apache进程用户名是SYSTEM(虽然我似乎无法使用'whoami'命令来检查这个)

任何指针都将非常感激.

FWIW,exec字符串看起来像这样......

echo "xcopy \"\\\\path\\to\\folder\\xxxx_Project\\*.*\" \"\\\\path\\to\\folder\\9876_NEWPROJECT\" /e /k /i /c";
Run Code Online (Sandbox Code Playgroud)

(我认为)实现了......

xcopy "\\path\to\folder\xxxx_Project\*.*" "\\path\to\folder\9876_NEWPROJECT" /e /k /i /c
Run Code Online (Sandbox Code Playgroud)

显然,'9876_NEWPROJECT位实际上是一个变量.

php windows exec

2
推荐指数
2
解决办法
1万
查看次数

将完整代码传递给phantomjs

我正在Go中编写一个服务,我正在使用phantomJS从给定的URL生成图像.从我的Go程序,我正在使用Exec启动phantomJS二进制文件.这工作正常,但现在我正在寻找一种方法来传递完整的代码,以及运行二进制文件的调用.我的代码如下:

var args = require('system').args;
var webPage = require('webpage');
var page = webPage.create();

page.viewportSize = {
    width: 1920,
    height: 1080
};

page.open("http://www.url2fetch.com", function (status) {
  var base64 = page.renderBase64('PNG');
  console.log(base64);
  phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

这永远不会改变.除了获取的网址:).所以我的具体问题是:是否可以启动phantomJS并将上面的代码作为参数传递,以便可以通过一次调用执行.原因:我不想将phantomjs脚本与我的Go程序一起打包.

exec go phantomjs

2
推荐指数
1
解决办法
611
查看次数

将Docker运行容器ID管道传输到docker exec

在我的开发中,我发现自己经常在生成的容器ID上发出docker run命令,然后发出命令docker exec。必须在命令之间复制/粘贴容器ID有点烦人,因此我试图将容器ID传递到docker exec命令中。

这是我的示例命令。

docker run -itd image | xargs -i docker exec -it {} bash

这将启动容器,但是随后出现以下错误。

the input device is not a TTY
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

编辑:我也忘了提我定义了一个ENTRYPOINT,并且不能覆盖它。

bash pipe exec docker

2
推荐指数
1
解决办法
1537
查看次数

标签 统计

exec ×10

php ×5

c ×2

arrays ×1

bash ×1

command ×1

docker ×1

fork ×1

go ×1

mkdir ×1

msbuild ×1

phantomjs ×1

pipe ×1

relative-path ×1

string ×1

sudo ×1

windows ×1