好的,我正在为客户端做一些工作。目前,我们只是试图为另一位开发人员创建的自定义函数做一个笨拙的修复,该函数导出他们所有联系人的CSV。
由于他们添加了更多的联系人,该功能需要更长的时间,并且需要更多的内存(我们不得不将他们的内存限制从128M提高到256M,现在又提高到512M)。
无论如何,我正在尝试运行CSV导出程序,但在不同的运行中,我收到了以下错误:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/readyby2/public_html/includes/module.inc on line 19
Fatal error: Maximum execution time of 30 seconds exceeded in /home/readyby2/public_html/sites/all/modules/contrib/views/modules/field/views_handler_field_field.inc on line 0
我时不时地会收到一个内部服务器错误500
注意,这个功能以前也起过作用,我也看到过它的作用。
现在,据我所知,这意味着我需要更改php.ini中的最大执行时间设置
/public_html
文件夹外有一个php.ini文件(Drupal安装的文件保存在这里),我已经修改了该设置,但仍然会出现上面的所有错误。我已将其分别更改为60、90和0,没有更改。
是否还有其他地方可以设置Drupal安装的超时设置?我是否找到了正确的php.ini文件?我在/public_html
目录或任何其他目录中都没有看到一个。
我该如何解决这个问题?我已经提高了内存限制(服务器错误是否意味着服务器上没有足够的内存来执行此功能?)
任何建议或帮助都是有用的。
仅供参考,这是在Drupal 7中。PHP版本是5.x(我不记得确切的版本,认为是5.1,如果需要的话可以找到)。
php.ini的正确位置在很大程度上取决于您的托管环境,但您可以通过在脚本上使用ini_set
或set_time_limit
函数来快速绕过它。
你可以在settings.php中进行ini设置,但它将是整个网站的全局设置。
ini_set('max_execution_time', 120);
到settings.php
或者在你的脚本set_time_limit ( 120 )
中,如果PHP安全模式打开,这就不起作用!
通常php.ini文件类似于/etc/php5/apache/php.ini
或类似文件。也许只是/etc/php.ini
在更简单的设置上。
如果您使用基于debian的系统,您可能需要咨询您的软件管理系统:$> rpm -ql php5
或apt替代系统。它列出了包中包含的文件。php.ini文件应该在其中。根据您的分发情况,您可能还需要查看软件包apache-mod_php5
或类似软件包。在包管理中搜索php,例如使用$> rpm -q --whatprovides /usr/bin/php5
或$> rpm -qa | grep -i php
。
在drupal环境中调用phpinfo()
。在输出中,php指定已解析哪个php.ini
文件。
您可以随时尝试(在您的网站的settings.php中(sites/default/settings.php)查看您是否有写它的权限。
ini_set('memory_limit', '256M');
它覆盖了php.ini。但我不认为你可以通过增加内存来解决这个问题(你不可能每次出现内存问题都增加你的限制)。你必须找到产生这个到达极限的原因(无限的束,太多的结果…)您总是可以使用视图模块和csv导出来制作一个具有良好视图的良好csv:D只需考虑为csv覆盖寻呼机。
另一个选项是将以下内容添加到drupal的.htaccess
:
php_value max_execution_time 0