Php 如何修复MediaWiki错误;Wiki使用cookies登录用户。您已禁用cookies。请启用它们并重试。”;?

Php 如何修复MediaWiki错误;Wiki使用cookies登录用户。您已禁用cookies。请启用它们并重试。”;?,php,cookies,mediawiki,wiki,Php,Cookies,Mediawiki,Wiki,我遇到的问题是,我无法登录到使用MediaWiki创建的新wiki。我在网上搜索了一个答案,但我找到的答案对这个特定问题没有帮助(比如这个:),我尝试了多个浏览器,并更改了设置以确保启用了cookie,但我一直收到相同的错误: “Wiki使用Cookie登录用户。您已禁用Cookie。请启用它们,然后重试。” 我不确定这是我当前版本的PHP(目前为5.3)的问题,还是我的wiki中的设置问题 我找到了一个解决方案,我将分步骤进行: 打开LocalSettings.php 转到页面底部,输入以下代

我遇到的问题是,我无法登录到使用MediaWiki创建的新wiki。我在网上搜索了一个答案,但我找到的答案对这个特定问题没有帮助(比如这个:),我尝试了多个浏览器,并更改了设置以确保启用了cookie,但我一直收到相同的错误:

“Wiki使用Cookie登录用户。您已禁用Cookie。请启用它们,然后重试。”


我不确定这是我当前版本的PHP(目前为5.3)的问题,还是我的wiki中的设置问题

我找到了一个解决方案,我将分步骤进行:

  • 打开
    LocalSettings.php
  • 转到页面底部,输入以下代码:
    session\u save\u path(“tmp”)
  • 在安装MediaWiki的文件夹中创建一个名为
    tmp
    的目录

  • 如果您使用的是NGINX+PHP-FPM,那么前面的答案可能无法解决您的问题

    根据我的经验,这个问题是由于php fpm没有对cookie_路径的写访问权限造成的。您可以通过运行以下命令找到此路径:

    php-fpm -i|grep --color cookie_path
    
    查看cookie_路径是什么,然后统计文件夹并确保您的php fpm用户对其具有写访问权限

    为了使用Nginx和Php-Fpm解决这个问题,我不得不将我的cookie\u路径从默认值/(说真的,为什么会是默认值?)更改为/tmp


    重新启动nginx和php-fpm后,它工作得非常好。

    当使用memcached存储会话文件时,可能会发生同样的情况。在这种情况下,wiki将无法在/tmp中写入cookie。如果您在error.log中看到类似的内容 “未找到文件(11211:9001/QWEQWEQWEQE)”这意味着您已经安装并配置了memchached,需要在LocalSettings.php中追加以下行:

    $wgMainCacheType = CACHE_MEMCACHED; 
    $wgParserCacheType = CACHE_MEMCACHED; # optional 
    $wgMessageCacheType = CACHE_MEMCACHED; # optional 
    $wgMemCachedServers = array( "127.0.0.1:11211" );
    $wgSessionsInMemcached = true; # optional
    

    我也有这个问题

    我所有的浏览器都在抱怨cookies被关闭

    我认为已经实施了一个组策略来禁用cookie。 在与我的服务器支持团队协商后,我决定远程访问服务器

    服务器抱怨磁盘空间不足。 我通过删除一些不相关的旧文件来清理磁盘

    尝试从我的浏览器再次登录,一切正常。

    成为root用户:

    su -
    
    然后编辑
    php.ini
    文件:

    nano /etc/php5/apache2/php.ini
    
    并将这些变量设置为/tmp:

    session.save_path = "/tmp"   
    session.cookie_path = "/tmp"
    
    您还可以更正权限,以防万一:

    chmod -R 1777 /tmp
    

    刚刚在运行IIS的Win2008 R2服务器上遇到此问题, 创建用户时,用户给出了以下(红色)消息:

    帐户创建错误用户帐户没有创建,我们可以这样做 没有确认它的来源。确保已启用Cookie,请重新加载此文件 请翻页再试一次

    此外,如果用户尝试登录Wiki,他们会收到以下(红色)消息:

    登录错误(WikiName)使用Cookie登录用户。你有饼干吗 残废请启用它们,然后重试

    失败的尝试:

    • 我尝试了JesseG17的解决方案,但无法保存对
      localsettings.php
      文件(尽管已停止服务器)
    • 我检查了临时位置的权限,但没有帮助
    • 我尝试通过IIS的PHP管理器更改临时位置,但是 这没有改变任何事情
    最后的工作是使用IIS的PHP管理器来更改 MediaWiki的PHP设置<代码>会话。从0到1使用\u cookies


    这在不重新启动的情况下解决了问题。

    这里没有提到的一个答案-确保您的文件系统没有空间。

    最简单的解决方案通常是设置

    $wgSessionsInObjectCache = true;
    $wgMainCacheType = CACHE_ANYTHING;
    
    在您的
    LocalSettings.php
    中。在最近的PHP中,您将默认启用OPcache;如果没有可用的加速器,最坏情况下,此配置将使用数据库

    另请参阅文档。

    Put

    $wgDisableCookieCheck=true;
    
    在您的
    LocalSettings.php


    ()

    我添加了一个新答案,因为我的设置稍有不同,我采取的步骤与其他人相似,但并不完全相同

    我用NGINX在CentOS上安装了MediaWiki。在成功运行了几个月之后,我突然发现了同样的cookie错误

    我遇到的问题是php fpm用户无法访问
    session.save_path
    文件夹。我不知道为什么会这样,但现在我把它修好了

    我运行了的一个变体命令,以确定会话的存储位置:

    php-fpm -i|grep --color save_path
    
    在我的例子中,它是
    /var/lib/php/session

    然后我更改了目录并设置了权限:

    cd /var/lib/php
    chmod -R 1777 session
    
    我重新启动了服务,一切都恢复了正常

    service nginx restart
    service php-fpm restart
    

    要检查的另一件事是会话tmp目录是否已满。症状是http服务器错误日志中的“写入失败”消息。哼

    我不得不在LocalSettings.php中取消对wgCookieSecure设置的注释:

    $wgMainCacheType = CACHE_MEMCACHED; 
    $wgParserCacheType = CACHE_MEMCACHED; # optional 
    $wgMessageCacheType = CACHE_MEMCACHED; # optional 
    $wgMemCachedServers = array( "127.0.0.1:11211" );
    $wgSessionsInMemcached = true; # optional
    
    #$wgCookieSecure=true

    只有在检查同一台计算机上的另一个wiki在类似设置下运行正常后,才发现此问题。因此,要进行调试,您可能需要在相邻目录中安装一个新的mediawiki,并检查这是否会给您带来任何麻烦。然后你可以浏览这里的所有建议,也可以浏览网站上的建议

    使用并查看cookie是否从服务器发送到浏览器。如果没有-您的服务器有问题。在任何一种情况下,请用调查结果更新您的问题。如果发生这种情况,我如何知道?查看回答并查看是否设置了Cookie标题。您使用的浏览器是什么?您尝试过其他浏览器吗?您是在本地计算机上运行MW,还是在远程主机上运行MW?您和web服务器之间是否存在任何可能剥离Cookie的内容?正如我所说,我使用了多种浏览器。我尝试了Chrome、Safari、Firefox和e