2

サーバーでセーフモードがオンになっていて、ディレクトリが別のユーザーの下に作成されているため、次の問題が発生しました。

  1. スクリプトをサーバーにアップロードすると、「user1」に属していると表示されます。新しいユーザーが作成されたときにファイルを保存できるように、新しいディレクトリを作成するだけです。
  2. 新しいディレクトリが作成されますが、「apache」ユーザーに属しています。
  3. 「user1」と「apache」は異なるユーザーです。セーフモードがオンになっています。そのため、php スクリプトは、新しく作成されたディレクトリに書き込むことができません。
  4. 今、私は問題を抱えています!

1 つの解決策は、セーフ モードを無効にすることです。また、同僚は、ディレクトリがスクリプトと同じユーザーの下にあることを確認するために変更できる設定があることを提案しました。だから私は後者ができるかどうかを見ています。

しかし、私は尋ねなければなりません。私の問題に対するプログラムによる解決策はありますか?

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 に答える