次のコードがありました。これはPHP 5.6とApache 2.2でうまくいきました。私は単に私のapacheを2.4にアップグレードしたと思うし、動作を停止したようだ。silexを使用してルーティングするときに404 Not Foundエラーが発生しました
api
-app
-job
-jobController.php
-jobFacade.php
-jobFacadeProvider.php
-src
-BatchAutoscalingApplication.php
-routes.php
-app.php
-index.php
routes.phpの
<?php
require_once __DIR__ . "/../job/JobController.php";
$app->mount("/job", new JobController());
?>
jobCOntroller.php
<?php
require_once __DIR__ ."/JobFacade.php";
class JobController implements ControllerProviderInterface
{
public function connect(Application $app)
{
$controllers = $app['controllers_factory'];
error_log("isnide cntroller",false);
$controllers->get('/isAcceptable', function (Request $request) use ($app) {
$id_contents = $request->query->get('id_contents');
$result = $app['job']->isAcceptable($id_contents, $id_host, $id_vhost, $private_ip);
return new JsonResponse($result);
});
return $controllers;
}
public function boot(Application $app)
{
// TODO: Implement boot() method.
}
}
?>
jobFacade.php
class JobFacade
{
public function isAcceptable($id_contents)
{
return "something"
}
}
JobFacadeProvider.php
class JobFacadeProvider implements ServiceProviderInterface
{
public function register(Application $app) {
$app['job'] = $app->share(function() use ($app) {
return new JobFacade();
});
}
public function boot(Application $app) {}
}
のindex.php
$app = require_once __DIR__ . '/app/app.php';
$app->after($app["cors"]);
$app->run();
?>
BatchAutoscalingApplication.php
class BatchAutoScalingApplication extends Application
{
public function __construct(array $values = array())
{
parent::__construct($values);
$this->register(new CorsServiceProvider(), array(
"cors.allowOrigin" => "*",
));
$this->register(new JobFacadeProvider());
}
}
app.phpが
$app = new BatchAutoScalingApplication();
require_once __DIR__ . '/src/routes.php';
return $app;
?>
私はURL http://<host>/job/isAcceptable?id_contents=34
を打つ、それは私に次のエラーを与える
404 Not Found
The requested URL /job/isAcceptable was not found on this server
PS:DocumentRootのはapi
ディレクトリを指摘しています。