2017-12-05 9 views
1

PHPのコードでランダムな名前を作成してからディレクトリを作成し、そのディレクトリにテキストファイルを作成して書き込む必要があります。 ディレクトリを作成しますが、テキストファイルを作成する必要はありません。ここPHP変数がディレクトリ変数で動作しない

mkdir("a/$letras", 777); 

そして:これは、デ・ディレクトリを作成し

$letras = $letra1 . $letra2 . $letra3 . $letra4; 

はこれ。これは、すべての文字に参加

$letra1 = chr(rand(65,90)); 
$letra2 = chr(rand(97,122)); 
$letra3 = chr(rand(65,90)); 
$letra4 = chr(rand(97,122)); 

ランダムな名前を作成します。 これは私が持っているものです私はどこに問題があると思うのですか?fopen:

$archt = fopen("a/$letras/text.txt", "w") or die(""); 
$txt = ""; 
fclose($archt); 

私はstackoverflowの中から検索されているSTUFの多くを試してみましたが、何ものために働いていない私は...すべてのディレクトリに

を777を与えている、それはパーマの問題はないと思います私はそれが何であるかを知らない?必要とされるものである進を渡すに並置として、あなたはは、mkdir関数に小数を渡している:私は質問に私のコメントで述べたように"$letras"以来

+2

これをデバッグするには、完全なPHPエラー報告を有効にしていますか? 'ini_set( 'display_errors'、true); error_reporting(E_ALL); ' – IncredibleHat

+0

はすべて同じページにありますか? –

+1

777を0777に変更し、結果が変わるかどうかを確認します。 mkdirはモード情報のためにchmod()を参照します:http://php.net/manual/en/function.chmod.php予期しない結果を避けるために、モードはchmod()関数に先行する0を必要とします。 – Dave

答えて

-1

は、変数

$dirLocation = "a/" . $letras; 

mkdir($dirLocation, 0777); 

$fileLocation = $dirLocation . "/text.txt"; 

$archt = fopen($fileLocation, "w") or die(""); 

$txt = ""; 

fclose($archt); 
+1

これは現在のコードとどう違うのですか?二重引用符は変数を評価するので、本質的にコードと同じように見えます。 – aynber

0

を隠します。結果としてアクセス許可が正しく設定されていません。

PHP Warning: fopen(a/DeOq/text.txt): failed to open stream: Permission denied in /home/dave/Desktop/test/test.php on line 11

詳細についてはコメントを通じて掘るすることを避けるために:ここ

ます。mkdir()のドキュメントインタプリタ(PHP)あなたのコードは、次のエラーが発生した開発環境のために正しくセットアップして

http://php.net/manual/en/function.mkdir.phpは、モードの説明のためのchmod()ディレクトリを参照します。モードはMKDIR()関数に0777に777を変更することに加えて

Note that mode is not automatically assumed to be an octal value, so to ensure the expected operation, you need to prefix mode with a zero (0). Strings such as "g+w" will not work properly.

http://php.net/manual/en/function.chmod.php

進あることが必要であり、「」ディレクトリが実際に(MKDIRとして存在することを確認)関数ではないであろうディレクトリ "ツリー"を作成します。 "a"はその下にディレクトリを作るために既に存在している必要があります。

このコードは、テストされ、動作します:

<?php 
$letra1 = chr(rand(65,90)); 
$letra2 = chr(rand(97,122)); 
$letra3 = chr(rand(65,90)); 
$letra4 = chr(rand(97,122)); 

$letras = $letra1 . $letra2 . $letra3 . $letra4; 

mkdir("a/$letras", 0777); 

$archt = fopen("a/$letras/text.txt", "w") or die("Death"); 
$txt = ""; 
fclose($archt); 
0

あなたはあまりにもサブディレクトリに権限を与える必要があります。

<?php 
    $letra1 = chr(rand(65,90)); 
    $letra2 = chr(rand(97,122)); 
    $letra3 = chr(rand(65,90)); 
    $letra4 = chr(rand(97,122)); 
    $letras = $letra1 . $letra2 . $letra3 . $letra4; 


    mkdir("a/$letras", 0777, true); //third parameter is important if you want to add perms recursively 


    $archt = fopen("a/".$letras."/text.txt", "w")or die(print_r(error_get_last(),true)); 

    $txt = ""; 

    fclose($archt); 

    ?>