2

由于服务器打开了安全模式,并且正在不同用户下创建目录,因此我遇到了以下问题:

  1. 我将我的脚本上传到服务器,它显示为属于'user1'。它所做的只是在创建新用户时创建一个新目录,以便在其中存储文件。
  2. 创建了新目录,但它属于“apache”用户。
  3. 'user1' 和 'apache' 是不同的用户;并且安全模式已打开。因此 php 脚本无法写入新创建的目录。
  4. 现在我有问题了!

一种解决方案是关闭安全模式。此外,一位同事建议可以更改一些设置以确保目录与脚本在同一用户下。所以我想看看后者是否可以完成。

但我不得不问。我的问题有程序解决方案吗?

我倾向于“不”,因为实施了安全模式以在 php 级别解决它。此外,实际问题可能看起来像是在不同用户下创建的目录,因此程序修复可能只是创可贴修复。

4

3 回答 3

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
      }

  }  
于 2008-10-31T05:07:33.540 回答
0

您可以通过 .htaccess 文件(如果在 Apache 上)为特定目录关闭安全模式。

php_value safe_mode = Off

您可能需要让您的托管服务提供商在 httpd.conf 中为您进行此更改。

于 2008-10-31T05:07:05.803 回答
0

我在将上传目录的组位设置为粘性方面取得了一些成功。然后 PHP 可以在其中创建目录并对其进行写入。

http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories

chmod g+s目录

于 2012-01-20T19:11:21.997 回答