I am building a frontend symfony app for a project with the current folder structure:
+---app
| +---conf
| +---lib
| | +---ca
| | | +---Search
+---frontend
| +---app
| +---bin
| +---src
| | \---PublicBundle
| | +---Controller
The app folder on root is where another (non symfony app) is located. It is a php app.
Inside the frontend folder is where symfony project is being built.
I am trying to load from inside the symfony app (from the public controller) a class from the other php app (a class inside the ca subfolder) but when I try to, symfony returns a namespace exception with the tip: Did you forget a "use" statement for another namespace?
It is correct to load a class from outside a symfony project like is, and if it is how is it done?
Thanks in advance,
Related
I have a Laravel project hosted in CPanel and it’s running but when I upload an image, it supposed to store in the public folder like ("public_path()/posts/theactualimage.jpeg").
in my local machine things are going pretty well but not on the hosted
I don’t know if there’s any configuration that I should do …
here is the structure of the folders
./
| public_html
| | posts
| | index.php
| | some other files
|
| myapp
| | all the other files controllers views
here is the function that stores the images
public function uploadImage($location, $imageName){
$name = $imageName->getClientOriginalName();
$imageName->move(public_path().'/'.$location, date('ymdgis').$name);
return date('ymdgis').$name;
}
the uploaded image is automatically creating new folder inside myapp/public/posts/(image.jpg)
if possible please log the public path and location, see if you getting expected results
im trying to install Laravel in my shared hosting website's(which is not laravel) subfolder.
for example in: example.com/dev
Structure:
->laravel
->app
->bootstrap
->public_html
...example.com folders & files
->dev
->css
->js
->.htacess
->index.php
... other Laravel public files
My example.com/dev/index.php looks like this:
... laravel codes
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/
require __DIR__.'/../../laravel/bootstrap/autoload.php';
/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/
$app = require_once __DIR__.'/../../laravel/bootstrap/app.php';
... laravel codes
Problem:
When i try to enter http://example.com/dev/ browser throws error:
This page isn’t working
mysite.com didn’t send any data.
ERR_EMPTY_RESPONSE
THERE ARE NO ANY INFORMATION/SOLUTION FOR THIS PROBLEM IN THE INTERNET.
ANY SOLUTION?
Your entire project should be inside your public_html folder. Then move all the contents of your public folder to public_html as well. Then edit your index.php to match the proper directory for autoload.php and app.php
From your text I assume you want call Laravel via http://example.com/dev/ If you hoster allows symlinks, you can try this.
-> laravel
-> app
-> ...
-> public // symlinked to public_html/example.com/dev
-> ...
-> public_html
-> example.com folders & files
-> dev // This is a symlink to laravel/public
A better approach in my opinion would be to create a subdomain and call Laravel like http://dev.example.com. It depends on your hoster how you can do this.
directory structure
laravel package
| |-project1
| |-app
| |-config
| |-resources
| |-project2
| |-app
| |-config
| |-resources
|-env
| and other files
|
i need the folder structure to be like above mentioned.please mention as tutorial as i am new to laravel. as i like to run multiple projects in the same laravel package without installing a new package sharing other files like env ,vendor etc.,
You could do something like this:
You can namespace all files under the app folder and prefix everything with 'project1', 'project2', etc
App/Project1/Models/etc...
App/Project1/Controllers/etc...
App/Project2/Models/etc...
App/Project2/Controllers/etc...
And in your route files, connect the routes to the different namespaces:
Route::group(['namespace' => 'App\Project1\Controllers'], function()
{
Route::get('/', 'HomeController#index');
});
You can even make different route files for different projects and load them through the RouteServiceProvider#map method...
But to be honest, I would never go this way. Laravel is so easy to load through composer, what is the problem? The whole system runs so smoothly, why try to introduce these dimensions? But if you really want to, there is always a way... :-)
I'm trying upgrade my laravel project from 5.2 to 5.3.
Since laravel 5.3, the route files are kept in a separate directory routes, instead of the previous app\Http directory. I created the file routes/web.app and pasted my routes into this file.
When i execute php artisan route:list, it returns:
+--------+----------+-------------------+------+--------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------+------+--------------------------------------------+------------+
| | GET|HEAD | captcha/{config?} | | \Mews\Captcha\CaptchaController#getCaptcha | web |
+--------+----------+-------------------+------+--------------------------------------------+------------+
My routes/web.php file:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function(){
echo 'here';
});
Where is my route?
When I access the home page, it returns a 404 error, but the error comes from laravel.
The file .htaccess is ok.
You said:
I created the file routes/web.app and past my routes on file.
In Laravel 5.3 the web.php file is already created in the routes directory. If you have recreated this file that is where the problem may be propagating from.
I read the upgrade documentation and thought I needed to remove the EventServiceProvider, RouteServiceProvider, AuthServiceProvider methods from the boot ....
But in fact I needed to update the contents of these files.
After updating the contents to the new version 5.3 up to where I tested, it is working ....
I am trying to gain a better understanding of MVC architecture. I write both front end and back end web applications using LAMP stack. I don't use any frameworks yet. I code in Notepad++ and use WinSCP for file transfer (Putty for terminal). All of the server side coding is done in PHP.
Based on the reading I've done, this is my best guess on how MVC's files are structured:
+ -- Project1
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
+ -- Project2
| + -- models
| | + -- model.php
| + -- views
| | + -- view.php
| + -- controllers
| | + -- controller.php
So, while there are a lot of articles and blogs about what models, views, and controllers are, I haven't seen anything about how to set this up past what I've gathered above.
I have no idea how this becomes integrated in relation to my public folder on my server. Here is my guess, assuming that /var/www/html/ is my public directory.
+ -- var
| + -- www
| | + -- html
| | | + -- my-application-1.php
| | | |
| | | + -- my-application-2.php
| | + -- Project1
| | | + -- models
| | | | + -- model.php
| | | + -- views
| | | | + -- view.php
| | | + -- controllers
| | | | + -- controller.php
| | + -- Project2
| | | + -- models
| | | | + -- model.php
| | | + -- views
| | | | + -- view.php
| | | + -- controllers
| | | | + -- controller.php
I am assuming based on what I've read (maybe I'm wrong) that people put their entire project "behind" their public folder. I am also assuming that you take your final application file (my-application1.php or my-application-2.php), put it in your public folder for people on the internet to use, and reference (php's include/require) your models, views and controllers from that application file. I've never referenced files behind my public file, but I'm assuming a lot here.
Can someone verify any of this for me? How is this supposed to be set up in relation to the rest of my linux server? Is there anything I am assuming that is incorrect that you'd care to correct?
I am trying to gain a good understanding of this before I pick up any frameworks (probably leaning toward Zend, Laravel, or CakePHP). I have read that frameworks help with this, but I currently don't have the resources to set up a framework and I would like to gain a full understanding of this before trying to pitch this to my team.
You're saying in your question that you don't have the resources to set up a framework but yet you have to resources to build one from scratch without even having the slightest idea what you're doing?
Believe me, you don't want to do it yourself. At the very least, you should first try some existing framework like symfony2 or zf2 or whatever you like.
When you'll become familiar with some of these and understand how they work, you will be able to create your own and give up in front of the tons of work it require.
Anyway, to answer the question, here's how zend framework 1 is structured
project
|-- application
| |-- Bootstrap.php
| |-- configs
| | `-- application.ini
| |-- controllers
| | |-- ErrorController.php
| | `-- IndexController.php
| |-- models
| `-- views
| |-- helpers
| `-- scripts
| |-- error
| | `-- error.phtml
| `-- index
| `-- index.phtml
|-- library
|-- public
| |-- .htaccess
| `-- index.php
With this framework, you would setup your web root to /path/to/project/public.
As you can see, none of the application code is directly accessible from the web. All incoming requests come throught the index.php where all the magic is.
If you're interested in knowing what the magic really is, all the php web framework are open source so feel free to check it out for yourself :
ZF2 on github
Sf2 on guthub
It's very dependant on the framework you choose to use, but the general idea is that the actual source directory is NOT stored in the web root. I use /web/projects on my deployments, then symlinking the public folder out to the htdocs
> cd /var/www/html
> ln -s /web/projects/myProject/public myproject
You'll then usually have an index.php file in the public file that kicks things off. There's also usually a .htaccess file that intercepts all requests and points them at that file.
Best option is to choose a framework (Laravel and Symfony are excellent options) and follow the getting started guides.