绕过PHP安全模式写入服务器。可能吗?
我遇到以下问题,因为服务器已打开安全模式,并且正在不同用户下创建目录:绕过PHP安全模式写入服务器。可能吗?,php,safe-mode,Php,Safe Mode,我遇到以下问题,因为服务器已打开安全模式,并且正在不同用户下创建目录: 我将脚本上传到服务器,它显示为属于“user1”。它所做的只是在创建新用户时创建一个新目录,以便在其中存储文件 已创建新目录,但它属于“apache”用户 “user1”和“apache”是不同的用户;安全模式开启。因此php脚本无法写入新创建的目录 现在我有问题了 一种解决方案是关闭安全模式。另外,一位同事建议可以更改一些设置,以确保目录与脚本位于同一用户下。所以我想看看后一种方法是否可行 但我不得不问。我的问题有一个程序
我倾向于说“不”,因为安全模式是在php级别实现的。此外,实际问题看起来像是在不同的用户下创建的目录,所以程序修复可能只是一个创可贴修复。 您可以通过一个.HTAccess文件(如果在Apache上)为特定目录关闭安全模式。
尽管在httpd.conf中,您可能需要让主机提供商为您进行此更改。我使用了以下解决方法: 您可以通过具有适当权限的FTP创建目录,而不是php mkdir
function FtpMkdir($path, $newDir) {
$path = 'mainwebsite_html/'.$path;
$server='ftp.myserver.com'; // ftp server
$connection = ftp_connect($server); // connection
// login to ftp server
$user = "user@myserver.com";
$pass = "password";
$result = ftp_login($connection, $user, $pass);
// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection, $newDir)) { // create directory
ftp_site($connection, "CHMOD 777 $newDir") or die("FTP SITE CMD failed.");
return $newDir;
} else {
return false;
}
ftp_close($connection); // close connection
}
}
我已经成功地将上传目录的组位设置为sticky。 PHP然后可以在其中创建目录并写入 chmodg+s目录
function FtpMkdir($path, $newDir) {
$path = 'mainwebsite_html/'.$path;
$server='ftp.myserver.com'; // ftp server
$connection = ftp_connect($server); // connection
// login to ftp server
$user = "user@myserver.com";
$pass = "password";
$result = ftp_login($connection, $user, $pass);
// check if connection was made
if ((!$connection) || (!$result)) {
return false;
exit();
} else {
ftp_chdir($connection, $path); // go to destination dir
if(ftp_mkdir($connection, $newDir)) { // create directory
ftp_site($connection, "CHMOD 777 $newDir") or die("FTP SITE CMD failed.");
return $newDir;
} else {
return false;
}
ftp_close($connection); // close connection
}
}