我在共享主机中的 symfony 项目上有一些错误
I have some error on symfony project in shared host
我是 Symfony 的初学者。我使用 Symfony 构建了一个非常简单的项目,该项目可以在本地主机中正常工作。我将项目文件夹的所有内容上传到共享主机的根目录中 'web',并将 'web' 文件夹上传到 'public_html' 文件夹。将 MySQL 正确导入我在主机中创建的数据库并更改 'parameters.yml' 并更改数据库连接详细信息。将 '/var/logs/' 和 '/var/cache' 的 chmod 更改为 777。但是在访问网站时出现内部错误。
错误详情:
[24-Apr-2016 05:02:09 UTC] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Session Storage was not able to create directory "D:\eventcalendar\app/../var/sessions/prod"' in /home/emusummit/var/cache/prod/classes.php:292
Stack trace:
#0 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1898): Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler->__construct('D:\eventcalenda...')
#1 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSession_HandlerService()
#2 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1937): Symfony\Component\DependencyInjection\Container->get('session.handler')
#3 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSession_Storage_NativeService()
#4 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1885): Symfony\Component\DependencyInjection\Container->get('session.storage...')
#5 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSessionService()
#6 /home/emusummit/var/cache/prod/c in /home/emusummit/vendor/twig/twig/lib/Twig/Loader/Filesystem.php on line 94
问题是什么?请帮我。谢谢
您可能没有清除缓存。
尝试通过运行命令清除缓存:
php bin/console cache:clear --env=prod
或者如果你使用开发环境(它不适用于生产服务器)你应该使用:
php bin/console cache:clear
如果您无权访问 shell,您可以通过从 var/cache
中删除具有您的环境名称的整个文件夹来手动清除缓存。对于 prod
环境,您应该删除 var/cache/prod
文件夹。
如果您没有通过
$ sudo apt-get install acl
如果你有它,只需输入
$ sudo setfacl -R -m u:www-data:rX project-symfony/var/sessions
$ sudo setfacl -dR -m u:www-data:rX project-symfony/var/sessions
第二行是给那个目录下的文件权限rwx
最佳做法是给予项目本身 rx 权限
rwx 到 var/cache
var/logs
和 var/sessions
,rwx 到它的衍生物(分别像我上面做的那样) .
之后您需要清除缓存 [如果您处于开发模式,请删除 --env=prod
] 然后您就可以开始了!
php bin/console cache:clear --env=prod
我是 Symfony 的初学者。我使用 Symfony 构建了一个非常简单的项目,该项目可以在本地主机中正常工作。我将项目文件夹的所有内容上传到共享主机的根目录中 'web',并将 'web' 文件夹上传到 'public_html' 文件夹。将 MySQL 正确导入我在主机中创建的数据库并更改 'parameters.yml' 并更改数据库连接详细信息。将 '/var/logs/' 和 '/var/cache' 的 chmod 更改为 777。但是在访问网站时出现内部错误。
错误详情:
[24-Apr-2016 05:02:09 UTC] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Session Storage was not able to create directory "D:\eventcalendar\app/../var/sessions/prod"' in /home/emusummit/var/cache/prod/classes.php:292 Stack trace:
#0 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1898): Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler->__construct('D:\eventcalenda...')
#1 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSession_HandlerService()
#2 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1937): Symfony\Component\DependencyInjection\Container->get('session.handler')
#3 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSession_Storage_NativeService()
#4 /home/emusummit/var/cache/prod/appProdProjectContainer.php(1885): Symfony\Component\DependencyInjection\Container->get('session.storage...')
#5 /home/emusummit/var/bootstrap.php.cache(2107): appProdProjectContainer->getSessionService()
#6 /home/emusummit/var/cache/prod/c in /home/emusummit/vendor/twig/twig/lib/Twig/Loader/Filesystem.php on line 94
问题是什么?请帮我。谢谢
您可能没有清除缓存。
尝试通过运行命令清除缓存:
php bin/console cache:clear --env=prod
或者如果你使用开发环境(它不适用于生产服务器)你应该使用:
php bin/console cache:clear
如果您无权访问 shell,您可以通过从 var/cache
中删除具有您的环境名称的整个文件夹来手动清除缓存。对于 prod
环境,您应该删除 var/cache/prod
文件夹。
如果您没有通过
$ sudo apt-get install acl
如果你有它,只需输入
$ sudo setfacl -R -m u:www-data:rX project-symfony/var/sessions
$ sudo setfacl -dR -m u:www-data:rX project-symfony/var/sessions
第二行是给那个目录下的文件权限rwx
最佳做法是给予项目本身 rx 权限
rwx 到 var/cache
var/logs
和 var/sessions
,rwx 到它的衍生物(分别像我上面做的那样) .
之后您需要清除缓存 [如果您处于开发模式,请删除 --env=prod
] 然后您就可以开始了!
php bin/console cache:clear --env=prod