gpt4 book ai didi

php - 执行 screen 命令返回 `Cannot make directory '/var/run/screen' : File exists`

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:34 26 4
gpt4 key购买 nike

我不知道发生了什么。我可以通过 exec() 命令运行任何其他 shell 命令,并且工作正常。这显然与某处的权限有关,但我不确定是什么。我已经在许多不同的服务器上尝试过这一点,其中一些工作正常,有些则不行。全部都运行 CentOS。安全模式始终处于关闭状态。

这是我想要开始工作的代码:

<?php
error_reporting(E_ALL);

if( ini_get('safe_mode') ){
echo "safe mode is on";
}else{
echo "safe mode is not on";
}
echo "\n\n";

echo "Start Server.....\n";

//exec("screen -clean", $err, $err1);
//exec("mkdir /var/test/tewst/");

exec("screen -dms test1 mkdir /var/test/test1/", $err, $err1);

print_r($err);
echo "\n" . $err1;
echo "\nCommands sent...";

?>

返回的内容是:

safe mode is not on

Start Server.....
Array
(
[0] => Cannot make directory '/var/run/screen': File exists
)

1
Commands sent...

有人可以解释一下吗?

最佳答案

更新:这是由 SELinux 引起的。

--

事实证明这是一些奇怪的文件系统/用户权限错误。通过 PHP 中的 exec() 命令运行 ls -al/var/run 后,它返回以下内容:

total 52
drwxrwxrwx. 23 root root 4096 Oct 12 15:13 .
drwxr-xr-x. 22 root root 4096 Oct 10 08:50 ..
d?????????? ? ? ? ? ? ConsoleKit
drwxr-xr-x. 2 root root 4096 Oct 11 18:13 abrt
-rw-r--r--. 1 root root 5 Oct 11 18:13 abrtd.pid
-?????????? ? ? ? ? ? acpid.pid
s?????????? ? ? ? ? ? acpid.socket
-?????????? ? ? ? ? ? atd.pid
-?????????? ? ? ? ? ? auditd.pid
-?????????? ? ? ? ? ? autofs-running
p?????????? ? ? ? ? ? autofs.fifo-misc
p?????????? ? ? ? ? ? autofs.fifo-net
-?????????? ? ? ? ? ? autofs.pid
drwxr-xr-x. 2 root root 4096 Feb 22 2013 certmonger
-?????????? ? ? ? ? ? certmonger.pid
d?????????? ? ? ? ? ? console
-?????????? ? ? ? ? ? cron.reboot
-?????????? ? ? ? ? ? crond.pid
d?????????? ? ? ? ? ? cups
-?????????? ? ? ? ? ? cupsd.pid
drwxr-xr-x. 2 root root 4096 Oct 11 18:13 dbus
drwxr-xr-x. 2 root root 4096 Feb 21 2013 faillock
d?????????? ? ? ? ? ? hald
-?????????? ? ? ? ? ? haldaemon.pid
drwx--x---. 2 root apache 4096 Oct 12 15:26 httpd
d?????????? ? ? ? ? ? lvm
s?????????? ? ? ? ? ? mcelog-client
-?????????? ? ? ? ? ? mcelog.pid
d?????????? ? ? ? ? ? mdadm
-?????????? ? ? ? ? ? messagebus.pid
drwxr-xr-x. 2 mysql mysql 4096 Oct 11 18:13 mysqld
drwxrwxr-x. 2 root root 4096 Feb 22 2013 netreport
d?????????? ? ? ? ? ? plymouth
d?????????? ? ? ? ? ? pm-utils
d?????????? ? ? ? ? ? portreserve
-?????????? ? ? ? ? ? rpc.statd.pid
-?????????? ? ? ? ? ? rpcbind.lock
-?????????? ? ? ? ? ? rpcbind.pid
s?????????? ? ? ? ? ? rpcbind.sock
d?????????? ? ? ? ? ? saslauthd
d?????????? ? ? ? ? ? screen
d?????????? ? ? ? ? ? sepermit
drwxr-xr-x. 2 root root 4096 May 10 05:06 setrans
-?????????? ? ? ? ? ? sm-notify.pid
-?????????? ? ? ? ? ? sshd.pid
-?????????? ? ? ? ? ? syslogd.pid
-?????????? ? ? ? ? ? utmp
drwxr-xr-x. 2 root root 4096 Feb 21 2013 winbindd

我通过删除该目录并将 /var/run 权限设置为 0777 来修复此问题。这意味着 Web 服务器用户可以创建该目录并按预期使用它。

rm /var/run/screen -R -f
chmod 0777 /var/run

我仍然不知道为什么会发生这种情况,也不知道为什么 ls 命令中到处都是问号。如果有人看到此内容并知道,请发表评论或回答解释原因。这将是一个很大的帮助,因为我知道还有更多错误。

关于php - 执行 screen 命令返回 `Cannot make directory '/var/run/screen' : File exists`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com