基本上我试图从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 …
如何使用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命令中使用相对路径?谢谢
我创建了代码片段中显示的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 "%(SectionsToEncrypt.Section)" "$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)\$(AnythingPastFlavorToBuild)" -prov "$(WebSiteRSACustomProviderName)""/>
</Target>
Run Code Online (Sandbox Code Playgroud) 我有以下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的引用.还有其他命令吗?
我正在尝试制作一个简单的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) 我写了一个简单的程序来理解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) 我正在尝试在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(在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位实际上是一个变量.
我正在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程序一起打包.
在我的开发中,我发现自己经常在生成的容器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,并且不能覆盖它。