小编lim*_*ima的帖子

在PHP站点突然"MySQL服务器已经消失"错误

今天我的一个网站开始展示

Error Number: 2006
MySQL server has gone away

它是在Apache 2.2.9(Debian),PHP 5.2.6-1 + lenny3(使用CodeIgniter 1.7.1框架)和MySQL 5.0.51a下运行的低流量客户端站点.我显然对这个错误进行了重新研究,但是所有可能的解决方案都意味着有大量的查询可能会超时并重置连接或达到数据包限制.但是,情况并非如此,它是使用最简单的查询处理的小型数据库.为了确保这一点,我编写了几个查询来返回一行,仍然是同样的错误.

数据库凭证很好,我甚至可以直接登录到mysql,运行一些网站的查询并立即获得正确的数据.在同一台服务器上有几个其他站点和数据库的连接,更大的站点,它们都没有问题.

我试过了:

  • 重启MySQL
  • 重新启动整个服务器
  • 寻找日志中的错误(Apache和MySQL都没有)
  • 检查数据库用户权限
  • 改变mysql.connect_timeoutdefault_socket_timeoutPHP
  • 改变max_allowed_packetMySQL
  • 阅读官方文档,论坛和SO中的所有内容,"MySQL服务器已经消失"

新:

  • 在PHP中禁用持久连接
  • 改变wait_timeoutconnect_timeout在MySQL中

更新:

它似乎与我的脚本的执行时间有关:它使用Facebook PHP客户端检索一些信息,这个调用似乎今天随机失败,所以我要么没有来自Facebook的数据或MySQL错误.但令我惊讶的是,没有一个给定的解决方案似乎处理超时.

有任何想法吗?感谢您的时间!

php mysql facebook codeigniter

14
推荐指数
1
解决办法
1万
查看次数

Facebook API没有公共内容的客户端身份验证

我正在为已经在Facebook上拥有他的产品照片的客户开发一个网站,他希望在他的网站上复制相同的相册.我已经使用Facebook Connect,所以我放弃了的组合photos.getAlbumsphotos.get动态让画廊.

到目前为止一直很好,但后来我意识到,如果没有用户通过FBC记录,则不会创建会话,并且API也会变得无法使用,即使对于公开可用的内容也是如此.我显然希望向所有人展示相册,而不仅仅是连接帐户的人.

这是Facebook API中所有功能的工作原理吗?这种情况的最佳(更容易实施)解决方法是什么?

php authentication api facebook

12
推荐指数
1
解决办法
1万
查看次数

在ARRAYFORMULA()中使用MIN()

我见过使用的一些例子SUM()内的ARRAYFORMULA()在谷歌电子表格(奇怪的是,他们似乎都喜欢的解决方法),但我无法弄清楚如何将它们应用到使用MIN()代替。

假设我有column AB并且C我只想获取MIN(A:C)D列的结果,仅针对与每一行匹配的三个单元格。直截了当的方式应该是ARRAYFORMULA(MIN(A1:C))足够的,但是肯定是行不通的。

如何以编程方式MIN()为Google电子表格中的所有行计算一行中某些单元格的?

min google-sheets array-formulas google-sheets-query google-sheets-formula

6
推荐指数
1
解决办法
4577
查看次数

如何在Perl中使用不同的随机值多次替换相同的字符串?

我正在使用这个Perl单行程序(在bash中)成功替换给定文件中的随机字符串:

perl -pi -e "s/replace\ this/`</dev/urandom tr -dc A-Za-z0-9 | head -c64`/g" example.php
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何用不同的随机字符串替换几个"替换" .

regex bash perl

3
推荐指数
1
解决办法
2491
查看次数

从其用户保护PHP文件管理器

大家好,我正在使用CodeIgniter PHP框架开发照片共享网站.这个想法是人们可以上传他们的照片,管理他们(通过某种文件浏览器,允许他们创建子文件夹,拖动文件等)和编辑它们(一些基本的东西,如调整大小,旋转和裁剪开始,和稍后,我将添加一些高级功能).

我已经为CI(Redux Authentication 2 Beta)实现了第三方认证解决方案,我现在正在集成一个JS/PHP文件管理器(AjaxExplorer),但问题是用于管理文件的PHP后端(移动,复制,等)过多地信任来自ajax调用的用户输入.例如,它正在做这样的事情(为了清楚起见,简化了):

move_uploaded_file($_FILES['upload']['tmp_name'], $root.$username.$_POST['destination_dir']);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,存在明显的安全问题,因为它盲目地接受用户投入的任何路径!我已经可以看到有人发送类似"../AnotherUser/"的内容作为$ _POST ['destination_dir']值.

我的问题是:什么是"沙盒"用户的最佳方式,以便只允许他管理自己的数据?我只是验证+过滤输入,希望捕获每次入侵的尝试?是否有专门用于解决此特定问题的库/包?

我认为这个问题必须在任何(足够成熟的)项目中以某种方式解决,这使得用户能够通过Web浏览器管理他们的文件,所以我希望找到一些明确的指导方针(因为有很多关于SQL注入的内容) ,XSS,CSRF等)但我想我没有使用正确的关键字.

php security ajax codeigniter file

1
推荐指数
1
解决办法
1479
查看次数