我遇到以下问题,因为服务器已启用安全模式,并且正在不同用户下创建目录:
一种解决方案是关闭安全模式。此外,同事建议可以更改设置以确保目录与脚本位于同一用户下。所以我想看看后者是否可以完成。
但我不得不问。我的问题有解决方案吗?
我倾向于'不',因为在php级别实现了安全模式来解决它。此外,实际问题可能看起来像是在不同用户下创建的目录,因此编程修复可能只是一个创可贴修复。
答案 0 :(得分:4)
我已经使用过这种解决方法:
而不是php mkdir,您可以通过FTP以适当的权限创建目录。
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
}
}
答案 1 :(得分:0)
您可以通过.htaccess文件(如果在Apache上)关闭特定目录的安全模式。
php_value safe_mode = Off
您可能需要让您的托管服务提供商在httpd.conf中为您进行此更改。
答案 2 :(得分:0)
我已经成功将上传目录的组位设置为sticky。 然后PHP可以在其中创建目录并写入它。
http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories
chmod g + s 目录