I would like to use ExeOutput for PHP and f3 (Fat Free Framework) to build an app. Before I really dive in, I wanted to make sure that I could get the basic setup to work right. I set up a bare bones “Hello World” application to test whether I have ExeOutput configured correctly.
When I run php’s built in server on a localhost port, the app/site works fine. However, when I compile with ExeOutput, the app window displays a 404 error. When I remove the need for autoloading a class, I can get the compiled app to display what I expect. However, I really do need the autoloading to work, and I’m pretty sure I just have something configured wrong.
More details in the replies.
1 Like
MOre details on what I have tried:
Method 1, works, but won’t work for a real app
In the index.php, I route like this:
$f3->route('GET /', function(){
echo "Hello!<br/><a href='/about'>about</a>";
});
$f3->route('GET /about', function(){
echo "About<br/><a href='/'>home</a>";
});
Method 2: uses autoloading, works with php’s built-in browser and xampp, error after exeoutput compilation
Here is the from the index.php file:
...
$f3->set('AUTOLOAD','controllers/');
$f3->route('GET /', "Site->home");
$f3->route('GET /about', "Site->about");
...
?>
And here is from the controllers/site.php file:
class Site {
function home($f3){
echo '<h1>Home Page</h1><br/><a href="/about">About</a>';
}
function about($f3){
echo "<h1>About</h1><a href='/'>Home</a><br/>";
}
}
When I run the following in a command/powershell window:
php -S localhost:8000
I can open a browser to localhost:8000 and click the links to switch between the 2 pages just fine.
But when I compile this app, I get a 404 error. I have the error logging turned on, and this is what is logged in php_errors.log:
[05-Oct-2022 19:23:49 Europe/Paris] HTTP 404 (GET /)
[05-Oct-2022 19:23:49 Europe/Paris] [C:/Users/runam/Documents/SynologyDrive/bryce_personal/Projects/ExeOutputTest/Data/index.php:10] Base->run()
I feel like I have a ExeOutput setting wrong somewhere that is causing this not to work. Any thoughts?
Ok, I figured out what to do, if anyone else ever has this issue.
In the ExeOutput file manager tab, I had to find the php file containing the class that would be “autoloaded” by php. Right click on that file → properties from the menu. Then check the box that says “Unpack the file(s) to virtual memory at startup.” Then click OK. I recompiled after than and the app worked.
1 Like
Never used fat free (but looks good), but on some others I had to check this option: