我需要在文件“/etc/php5/apache2/php.ini”中更改哪些内容以显示错误、警告、异常?我应该如何保存我所做的更改?

Posted

技术标签:

【中文标题】我需要在文件“/etc/php5/apache2/php.ini”中更改哪些内容以显示错误、警告、异常?我应该如何保存我所做的更改?【英文标题】:Where & what I need to change in a file '/etc/php5/apache2/php.ini' to display errors, warnings, exceptions? How should I save the changes I made? 【发布时间】:2016-03-01 19:30:17 【问题描述】:

我有:

Ubuntu Linux 12.04 LTS Apache Web 服务器(Apache httpd 2.4.16) php 5.5.29

现在,每当代码出现问题时,我总是会在浏览器窗口中看到一个白屏,根本没有输出。因此,我搜索了解决方案并知道我必须打开错误报告才能获得详细的错误/异常/警告/等。

为此,我知道我需要更改 Apache Web 服务器正在使用的 php.ini 文件。

我用鼠标选择文件'/etc/php5/apache2/php.ini',右键单击文件'/etc/php5/apache2/ php.ini',选择选项 'Open With Sublime Text2' 并在 Sublime Text Editor 中打开文件。

我在 '/etc/php5/apache2/php.ini' 文件的第 466 行做了一个小改动,如下:

display_errors = Off //Old code present on line no.466 of php.ini
display_errors = On  //New code changed by me on line no.466 of php.ini

我不确定这是我需要对 '/etc/php5/apache2/php.ini' 文件进行的唯一更改以获取错误/警告/异常/等。请详细指导我有关我需要对文件 '/etc/php5/apache2/php.ini' 进行的更改以获取所有可能的错误/警告/异常/等。

现在,当我尝试保存此文件时,我收到一个弹出窗口,提示 '无法保存 /etc/php5/apache2/php.ini'

我是笔记本电脑的所有者,系统是我的,我是系统的管理员,但我仍然无法对文件进行任何更改。这对我来说真的是一个无法理解,无用和奇怪的东西。以前当我在我的 Windows 机器上使用 PHP 时,从来没有发生过这种奇怪的事情和头痛。

请有人通过提供描述性和逐步的答案将我从这个该死的混乱中解救出来。

很少有人说我必须打开终端并在那里输入命令。但我没有得到什么是终端?在哪儿?如何打开它?什么是 root 用户,什么是 sudo 用户?每个用户做什么?它们之间有什么区别?图形文本编辑器的目的是操作文件,而这个 Ubuntu 阻止我这样做。

Ubuntu Linux 的一切都很奇怪。它有什么用?等等

【问题讨论】:

使用sudo启动编辑器以root身份编辑文件 @Joe :我只是用鼠标右键单击该文件,然后选择“使用 Sublime Text 2 打开”选项,就像我在 Windows 上所做的那样。现在我没有通过“通过使用 sudo 启动编辑器以 root 身份编辑文件”来了解你在说什么。当我右键单击打开文件时,我应该如何使用 sudo 启动 Sublime 编辑器?告诉我清楚。 @Joe:我从未在 Windows 操作系统上遇到过这种耗时且无用的问题。 Windows 有一个类似的功能叫做用户帐户控制 你读过你的 apache web 服务器的错误日志吗? 【参考方案1】:

什么是终端?

终端是您执行命令的界面。更多详情here。就像 Windows 中的cmd

它在哪里?怎么打开?

打开Dash(破折号类似于Windows中的Start按钮) 并输入终端。

带有>_ 的黑板图标是您的终端,点击它。

这就是终端的样子。

什么是root用户,什么是sudo用户?每个用户做什么 做?它们之间有什么区别?

引自Ubuntu docs

在 Linux(和一般的 Unix)中,有一个名为 root 的超级用户。 Windows 的 root 等效项是 Administrators 组。超级用户可以做任何事情,因此以超级用户的身份进行日常工作可能很危险。您可能会错误地键入命令并破坏系统。理想情况下,您以仅拥有手头任务所需权限的用户身份运行。在某些情况下,这必须是 root,但大多数时候它是普通用户。

默认情况下,root 帐户密码在 Ubuntu 中是锁定的。这意味着您不能直接以root 登录或使用su 命令成为root 用户。但是,由于root 帐户实际存在,因此仍然可以使用根级权限运行程序。这就是sudo 的用武之地——它允许授权用户以root 身份运行某些程序,而无需知道root 密码。

编辑 php.ini 文件:

既然您知道终端是什么,请打开终端并输入:

sudo vi /etc/php5/apache2/php.ini

注意:还有各种其他编辑器,如nanogedit 等。

系统会提示您输入密码:

[sudo] password for user:

只需输入密码并回车即可。您将在终端中看到php.ini 的内容。现在,滚动并搜索Display_errors =off 行。您必须将其更改为Display_errors =on,要进行此更改,请按i,进行更改,按esc,按shift+q,输入wq!,然后回车。 现在,您必须重新启动 apache 才能使更改生效。所以,输入:

sudo service apache2 restart

然后按回车键。而已。希望能给你一个想法:)

【讨论】:

【参考方案2】:

关于 php.ini

您可以在 all settings of your php.ini 或编辑 php.ini 中进行运行时更改。

默认情况下,您应该保持 error_reporting 为 false。在开发中,您可以在运行时生成报告。

error_reporting(E_ALL);
ini_set("display_errors", 1);

仅当您处于开发模式以查看所有致命/解析错误或将 error_log 设置为所需文件以记录错误而不是生产中的 display_errors 时才执行此操作(这需要打开 log_errors)。

关于文件更改

php.ini需要root用户编辑。

所以你可以通过终端编辑:

    打开终端 切换用户为root 通过vi editor 编辑php.ini 并进行更改。 重启apache服务器

或者如果你还想通过 sublime 编辑

    通过sublime with root access打开php.ini 您需要在 php.ini 中进行必要的更改 重启apache服务器

【讨论】:

【参考方案3】:

终端

终端是一个界面,您可以在其中键入和执行基于文本的命令。 把它想象成 Windows 中的cmd

如何运行它: 打开 Dash(超级/窗口键)或 Applications 并输入 terminal,或按 Ctrl+ 使用键盘快捷键Alt+T.

因为这是广泛的,你实际上不需要终端来解决你的问题;有关终端的详细说明,请参阅:What is a terminal and how do I open and use it?。

在 php.ini 中显示错误设置

您必须编辑 2 个设置:

error_reporting = E_ALL 确保它只有值 E_ALLE_ALL = 显示所有错误、警告和通知,包括编码标准。E_NOTICE = 显示通知E_STRICT = 显示编码标准警告 如果你把~放在前面,它的意思是Except。 display_errors = On

类 Unix 操作系统文件权限

在类 unix 操作系统中,文件和目录归用户所有,并且不同的权限(读取、写入、运行)适用于所有者

这些是非常简化的解释: '/etc/php5/apache2/php.ini' 文件由root拥有,并且只有root 拥有写权限,因此您无法编辑除非您是用户 root 本身。

但是有一种方法可以让您编辑其他用户拥有的文件,那就是使用命令:sudo (superuser do ...) 或 gksu/ gksudo 用于图形界面软件。

您可能认为您的用户名是另一个管理员/超级用户,那么您为什么不能直接编辑并保存文件呢?好吧,实际上你不是。您的用户只是普通用户,但有权执行 SuperUser 任务。换句话说,你只是一个 sudo 用户 (sudoers)。


因此,保存所做更改的唯一方法是使用 root 权限运行 Sublime Text。

这可以通过以下命令从终端执行:sudo sublime gksu sublime

或者没有终端: 通过 Dash(按 super/window 键),只需输入 gksu sublime 并按 Enter(系统将要求您输入密码)。

这会让你以root 用户身份运行 sublime 文本编辑器,所以现在你可以打开 '/etc/php5/apache2/php.ini' 文件并对其进行编辑并保存。

(如果您没有 gksu,请通过 Ubuntu Software Installer 安装它。)

【讨论】:

【参考方案4】:

我使用 gksudo 和 gedit 来完成这项工作。 gksudo 使打开图形界面成为可能。 Gedit 是 GNOME 的默认文本编辑器。如果你有 KDE,那么你会使用 kedit。

首先我找到所用配置文件的正确位置。你可以很容易地找到一个调用函数 php_info 的 php 文件。 php文件的内容是对一个函数的调用:

  phpinfo();

就是这样。我总是在 apache 的文档根目录中有一个 info.php 文件(在 Ubuntu /var/www 中。然后我使用以下命令调用该文件:

http://localhost/info.php

并且将返回包含大量信息的文档。在其中,您有一个配置值: 加载配置文件

该行的值是 apache 服务器使用的 php 文件。您应该编辑该文件以查看显示的错误。让我们将该值称为 %phpini-file%。

接下来我打开一个终端 (见https://help.ubuntu.com/community/UsingTheTerminal) 并输入

gksudo gedit %phpini-file%

我会遍历文件,直到看到错误处理和日志记录。 之后,您将找到要更改的变量。 在开发机器上,我将变量 error_reporting 设置为:

error_reporting = E_ALL

文件中的文档为您提供了很好的建议。

在该变量下面有变量 display_errors、display_startup_errors 和 log_errors。我总是在我的开发机器上给这些变量赋值。

下面的一些行你有变量 track_errors。我把它打开了。

进行这些更改后,您必须重新启动 apache。 我的做法是:

sudo /etc/init.d/apache2 restart

相当于

sudo service apache2 restart

但这是我记忆中的方式。

您可以键入 ALT + F2 而不是终端,您将看到一个命令行出现在屏幕中间。接下来你输入你的命令,动作就会被执行。

Root 是在基于 unix 的系统上拥有所有权限的用户。 sudo 是 super user do 的缩写,可以像 root 一样执行命令。整个根概念确保没有任何用户可以在系统上执行任何操作。您必须是 root 或以其他方式获得 sudo 权限才能对系统进行更改。

【讨论】:

【参考方案5】:

你只需要按下

Ctrl + Alt + T

你会看到一个窗口出现,它只是终端。

你只需要输入:

sudo gedit /etc/php5/apache2/php.ini

[Gedit 只不过是默认的 linuk 编辑器] 之后,系统会要求您输入密码,您需要在此处输入系统密码。

文件将在编辑器中打开,只需在该页面中找到Display_Errors并替换off with on即可:

Display_Errors=on

更改后保存并关闭该文件。

只需在终端上再次输入此命令即可重新启动您的 apache:

sudo /etc/init.d/apache2 restart

【讨论】:

以上是关于我需要在文件“/etc/php5/apache2/php.ini”中更改哪些内容以显示错误、警告、异常?我应该如何保存我所做的更改?的主要内容,如果未能解决你的问题,请参考以下文章

检查 xdebug 是不是正常工作

ubuntu14php5.5安装mcrypt扩展

Ubuntu Linux 上的 PHPinfo 中缺少 MySQL

ZendGuardLoader 段错误与 apache

启用 Opcache 不起作用

PHP“mail()”函数从 php5 cli 发送邮件,但在浏览器运行脚本时不发送