Fails to open file on file_get_contents()

Hello, can someone help me clean this code? It shows no output and fails to open file on file_get_contents(). Thank you in advance!

for index.php

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>Java Compiler</title>
            </head>
        <body>
            <form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ; ?>" >
                <label>Select Language :</label>
                <select name="language" style="margin-bottom: 10px;margin-top: 10px; ">
                    <!--<option value="cpp">C++</option>
                    <option value="c">C</option>-->
                    <option value="java">JAVA</option>
                </select></br>
                <textarea placeholder="// Enter your code here. (* The Class Name MUST Be code *)" name="code" rows="16" cols="80"></textarea>
                </br></br>
                <label style="margin-bottom: 10px;margin-top: 10px; ">Input : </label></br></br>
                <textarea placeholder="// Enter your inputs here." name="input" rows="10" cols="80"></textarea>
                </br>
                </br><input type="submit" name="run" value="Run">
            </form>
        </body>
    </html>
    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            if ($_POST['language']=='java'){
                include("java.php");
            }
        }
        
            
    ?>

for java.php

 <?php
        $output             = "";
        putenv("PATH=C:\Program Files\Java\jdk-21\bin");
        //shell_exec("javac code.java 2>&1");
        //echo shell_exec("java code 2>&1");
        
        // Variables 
        $cc                 = "javac";                       // CMD Command for Compiling the code file 
        $out                = "java code";                   // CMD Command for executing the code file 
        $code               = $_POST['code'];                // Getting the value of the code field
        $input              = $_POST['input'];               // Getting the values of the inputs field
        $code_path          = "code.java";                   // The path of the code file for compileing 
        $input_file         = "input.txt";                   // The path of the input file 
        $error_file         = "error.txt";                   // The path of the error file 
        $runtime_file       = "runtime.txt";                 // The path of the runtime errors file ( Stores the runtime errors in the program )
        $executable         = "*.class";
        $command            = $cc . " " .$code_path;        // CMD Compile permission 
        $command_error      = $command . " 2>".$error_file; // CMD Getting Errors Permission 
        $runtime_error_file = $out. " 2>".$runtime_file;      // CMD Getting Runtime Erros Permission 
        
		$error_file_open   = fopen($error_file,'w+') or die("Unable to open file!");
        $file_code         = fopen($code_path,'w+') or die("Unable to open file!");
        fwrite($file_code,$code);
        fclose($file_code);
        $file_in           = fopen($input_file,'w+') or die("Unable to open file!");
        fwrite($file_in,$input);
        fclose($file_in);
        
        exec("cacls  $executable /g everyone:f"); 
    	exec("cacls  $error_file /g everyone:f");
        
        // compiling the file
        shell_exec($command);
        $path = __DIR__ . 'error.txt';
        $error               = file_get_contents($error_file);
        echo $error;

        // the conditions
        if (trim($error)=="")
        {
            if (trim($input)=="")
            {
                shell_exec($runtime_error_file);
                $runtime_error= file_get_contents($runtime_file);
                $output       = shell_exec($out);
            }else{
                shell_exec($runtime_error_file);
                $runtime_error= file_get_contents($runtime_file);
                $out          = $out . " < " .$input_file;
                $output       = shell_exec($out);
            }
    ?>
            <label style="margin-bottom: 10px;margin-top: 10px; ">Output : </label></br></br>
            <textarea placeholder="// The result is :"  rows="10" cols="80"><?php echo $output; ?></textarea>
            <?php
            }else if (!strpos($error,"error"))
            {
            if (trim($input) == "")
            {
                $output=shell_exec($out);
            }else{
                $out=$out." < ".$input_file;
			    $output=shell_exec($out);
            }
            ?>
            <label style="margin-bottom: 10px;margin-top: 10px; ">Output : </label></br></br>
            <textarea placeholder="// The result is :"  rows="10" cols="80"><?php echo $output; ?></textarea>
            <?php
        }else
            {
            ?>
                <label style="margin-bottom: 10px;margin-top: 10px; ">Output : </label></br></br>
                <textarea placeholder="// The result is :"  rows="10" cols="80"><?php echo "<pre>$error</pre>"; ?></textarea>
            <?php
                
            }
            exec("del $code_path");
			exec("del *.txt");
			exec("del $executable");
            ?>

You haven’t written anything to $error_file. So what are you expecting to read?

thanks for the response @rpkamp , Ohh… what could I possibly write on $error_file?

I’m not sure how we’re supposed to know the answer to that… it’s your file, why are you creating it?

1 Like

Try this:

ini_get('allow_url_open')

It’s not a URL so I don’t see how that setting is relevant here

So you like to go on here and just make generic pointless statements without providing actual help, got it. Good to know. Perhaps you are just trying to get your comment count up or kill time, that’s your prerogative. You come off as confrontational, you should work on that. Have a good one.

OP, check the file path to error.txt

Nope, I provided my help in the second post of this thread. For which I read their code to see what it did and came to the conclusion the file is empty because nothing if written to it. Allowing reading URLs won’t change that :person_shrugging:

Cool all good