【问题标题】:Getting around PHP safe mode to write to server. Is it possible?绕过 PHP 安全模式写入服务器。可能吗?
【发布时间】:2012-01-21 03:11:21
【问题描述】:

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

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

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

但我不得不问。是否有针对我的问题的编程解决方案?

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

【问题讨论】:

    标签: php safe-mode


    【解决方案1】:

    我已经使用了这个解决方法:

    您可以通过具有适当权限的 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
          }
    
      }  
    

    【讨论】:

      【解决方案2】:

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

      php_value safe_mode = Off
      

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

      【讨论】:

        【解决方案3】:

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

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

        chmod g+s 目录

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-07
          • 1970-01-01
          • 1970-01-01
          • 2016-12-19
          • 2016-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多