在 ovh 共享服务器上与 Symfony 2.8 失去会话
Lost session with Symfony 2.8 on ovh mutualized server
我将 Symfony 2.8 与 FOSUserBundle 2 一起使用。我已经升级了我在 ovh 上的报价,并且我的 php 配置的一些元素发生了变化。我有一个大问题,因为我的用户无法连接到该网站(大约 5 分钟后断开连接)。这是一个拥有约 8000 名成员的协会的网站,每个成员都可以连接...
之前,会话写入一个特殊的文件夹 (app/var/session)。知道它应该写入缓存文件夹,但它没有。
我在 www 文件夹和项目文件夹中有一个 htaccess,其中包含:
SetEnv SHORT_OPEN_TAGS 0
SetEnv REGISTER_GLOBALS 0
SetEnv MAGIC_QUOTES 0
SetEnv SESSION_AUTOSTART 0
SetEnv ZEND_OPTIMIZER 1
SetEnv PHP_VER 5_6
在我的 config.yml 中,我有:
session:
cookie_lifetime: ~
# handler_id: session.handler.native_file
# save_path: '%kernel.root_dir%/var/sessions'
作为信息,这是我的一部分 composer.json :
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"twig/extensions": "1.4.*",
"symfony/assetic-bundle": "2.8.*",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.11.3",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"sensio/generator-bundle": "~3.0@dev",
"incenteev/composer-parameter-handler": "~2.0",
"symfony/dom-crawler" :"3.2.*",
"friendsofsymfony/user-bundle": "~2.0@dev",
"gregwar/image-bundle": "dev-master"
},
"require-dev": {
"leafo/lessphp": "0.5.0",
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
我的缓存和我的日志文件夹在 chmod -R 777
当我在本地计算机上部署时,它运行良好(这意味着会话文件是在缓存文件夹中创建的)。
如果我直接输入 url 而不是 www.mydomain.com (所以这不是 ovh 多站点配置的问题),它仍然不起作用(意味着未创建会话文件)。
当我在开发环境中时,它也不起作用。
如果我查看日志,我没有看到任何错误。
当然,存在 php 配置错误。我是否遗漏了一些重要的 php 变量集?有什么想法吗?
非常感谢。
因为我无法让它工作,我终于发现我可以使用 pdo 处理程序管理数据库中的会话。我不相信这是最好的解决方案,但它仍然是一个解决方案。
如需进一步说明,请查看 symfony doc pdo_session_storage
我将 Symfony 2.8 与 FOSUserBundle 2 一起使用。我已经升级了我在 ovh 上的报价,并且我的 php 配置的一些元素发生了变化。我有一个大问题,因为我的用户无法连接到该网站(大约 5 分钟后断开连接)。这是一个拥有约 8000 名成员的协会的网站,每个成员都可以连接... 之前,会话写入一个特殊的文件夹 (app/var/session)。知道它应该写入缓存文件夹,但它没有。
我在 www 文件夹和项目文件夹中有一个 htaccess,其中包含:
SetEnv SHORT_OPEN_TAGS 0
SetEnv REGISTER_GLOBALS 0
SetEnv MAGIC_QUOTES 0
SetEnv SESSION_AUTOSTART 0
SetEnv ZEND_OPTIMIZER 1
SetEnv PHP_VER 5_6
在我的 config.yml 中,我有:
session:
cookie_lifetime: ~
# handler_id: session.handler.native_file
# save_path: '%kernel.root_dir%/var/sessions'
作为信息,这是我的一部分 composer.json :
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.8.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"twig/extensions": "1.4.*",
"symfony/assetic-bundle": "2.8.*",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.11.3",
"sensio/distribution-bundle": "~5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"sensio/generator-bundle": "~3.0@dev",
"incenteev/composer-parameter-handler": "~2.0",
"symfony/dom-crawler" :"3.2.*",
"friendsofsymfony/user-bundle": "~2.0@dev",
"gregwar/image-bundle": "dev-master"
},
"require-dev": {
"leafo/lessphp": "0.5.0",
"sensio/generator-bundle": "~3.0",
"symfony/phpunit-bridge": "~2.7"
},
我的缓存和我的日志文件夹在 chmod -R 777
当我在本地计算机上部署时,它运行良好(这意味着会话文件是在缓存文件夹中创建的)。
如果我直接输入 url 而不是 www.mydomain.com (所以这不是 ovh 多站点配置的问题),它仍然不起作用(意味着未创建会话文件)。
当我在开发环境中时,它也不起作用。
如果我查看日志,我没有看到任何错误。
当然,存在 php 配置错误。我是否遗漏了一些重要的 php 变量集?有什么想法吗?
非常感谢。
因为我无法让它工作,我终于发现我可以使用 pdo 处理程序管理数据库中的会话。我不相信这是最好的解决方案,但它仍然是一个解决方案。 如需进一步说明,请查看 symfony doc pdo_session_storage