我需要在文件“/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?

提问人:PHPLover 提问时间:11/27/2015 最后编辑:Madara's GhostPHPLover 更新时间:12/7/2015 访问量:1778

问:

我有:

  • 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”,选择选项“用 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 在这里一切都很奇怪。它有什么用?等。

apache ubuntu 错误报告 php-ini

评论

2赞 Joe 11/27/2015
以 root 身份编辑文件,方法是使用sudo
0赞 PHPLover 11/27/2015
@Joe :我只需用鼠标右键单击文件,然后选择“用 Sublime Text 2 打开”选项,就像我在 Windows 上所做的那样。现在我没有通过“通过使用 sudo 启动编辑器以 root 身份编辑文件”来理解您在说什么。我应该如何在右键单击打开文件时使用 sudo 启动 Sublime 编辑器?告诉我清楚。
0赞 PHPLover 11/27/2015
@Joe:在Windows操作系统上,我从未遇到过如此耗时且无用的问题。
1赞 mystery 11/27/2015
Windows 具有类似的功能,称为用户帐户控制
0赞 Ken Cheung 11/30/2015
你有没有读过你的apache web服务器的错误日志?

答:

1赞 Somnath Muluk 11/30/2015 #1

关于php.ini

您可以在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 用户编辑。

因此,您可以按终端进行编辑:

  1. 打开终端
  2. 将用户切换为 root
  3. 通过 vi 编辑器编辑php.ini并进行更改。
  4. 重新启动 apache 服务器

或者,如果您仍然想通过崇高进行编辑

  1. 通过 sublime 打开php.ini,具有 root 访问权限
  2. 您需要在php.ini中进行必要的更改
  3. 重新启动 apache 服务器
4赞 Criesto 12/2/2015 #2

什么是终端?

终端是执行命令的界面。更多细节在这里。就像在窗户里一样。cmd

它在哪里?如何打开它?

打开(Dash 类似于 Windows 中的按钮)enter image description here并键入终端。DashStartenter image description here

黑板状图标是您的终端,单击它。>_enter image description here

这就是终端的样子。

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

引自 Ubuntu 文档

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

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

编辑php.ini文件:

现在您知道什么是终端,打开终端并键入:

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

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

系统将提示您输入密码:

[sudo] password for user:

只需输入密码并按回车键即可。您将在终端中看到 的内容。现在,滚动并搜索该行。您必须将其更改为 ,要进行此更改,请按 ,进行更改,按 ,按键入并按回车键。 现在,您必须重新启动 apache 才能使更改生效。因此,键入:php.iniDisplay_errors =offDisplay_errors =oniescshift+qwq!

sudo service apache2 restart

并按回车键。就是这样。希望能给你一个想法:)

0赞 Loek Bergman 12/2/2015 #3

我使用 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。我总是在我的开发机器上为这些变量提供值 On。

下面的一些行,你有变量track_errors。我把它放在 On。

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

sudo /etc/init.d/apache2 restart

它相当于

sudo service apache2 restart

但这就是我记忆的方式。

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

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

1赞 cwps 12/3/2015 #4

终端

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

如何运行:
打开 Dash(Super/window 键)或应用程序并键入 ,或按 ++ 使用键盘快捷键。
terminalCtrlAltT

因为这是广泛的,你实际上不需要终端来解决你的问题;有关终端的详细说明,请参阅:什么是终端以及如何打开和使用它?

在php.ini中显示错误设置

您必须编辑 2 个设置:

  • error_reporting = E_ALL
    确保它只有值 。
    = 显示所有错误、警告和通知,包括编码标准。
    = 显示通知
    = 显示编码标准警告,
    如果放在前面,则表示例外。
    E_ALLE_ALLE_NOTICEE_STRICT~
  • display_errors = On

类 Unix 操作系统文件权限

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

这些是非常简化的解释:“
/etc/php5/apache2/php.ini”文件仅归 拥有并具有写入权限,因此除非您是用户本身,否则您无法编辑它。
rootrootroot

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

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


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

这可以通过以下命令从终端执行来实现:sudo sublimegksu sublime

或者没有终端:
通过 Dash(按超级/窗口键),只需输入并按回车键(系统会要求您输入密码)。
gksu sublime

这使您以用户身份运行 sublime text editor,因此现在您可以打开“/etc/php5/apache2/php.ini”文件并对其进行编辑并保存。root

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

0赞 Nehal 12/4/2015 #5

你只需要按

Ctrl + Alt + T

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

在那里,你只需要输入:

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

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

该文件将在编辑器中打开,只需在该页面中找到并替换 ,因此它将是:Display_Errorsoff with on

Display_Errors=开

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

然后通过再次在终端上键入以下命令来重新启动您的apache:

sudo /etc/init.d/apache2 restart