【问题标题】:PHP script showing a blank screen显示空白屏幕的 PHP 脚本
【发布时间】:2011-04-10 15:32:09
【问题描述】:

我有一个服务器设置,其中只有 phpinfo() 的测试脚本可以正常工作。

当我尝试在其上运行我的应用程序时,它显示为一个空白屏幕。

我正在从浏览器调用 index.php。前几行如下:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require_once('codelibrary...

然而,屏幕仍然是空白的。


编辑 1

这是文件的结构:

/.htaccess
/index.php
/codelibrary/inc/user-top.php
/codelibrary/inc/variables.php
/codelibrary/inc/config.php

index.php

<?php 
require_once('codelibrary/inc/user-top.php'); 
...

/codelibrary/inc/user-top.php

<?php
require_once("./codelibrary/inc/variables.php"); 
...

/codelibrary/inc/variables.php

<?php
include_once('config.php');
...

我认为这里的引用可能有问题,所以我将其更改为:

require_once("./codelibrary/inc/config.php");

也是,但没有运气。


编辑 2

啊哈!感谢 Col 和 TopQ 指出我应该查看日志文件,它说:

[10-Sep-2010 17:06:02] PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/suhosin.所以' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/suhosin.so:无法打开共享对象文件:在第 0 行的未知中没有这样的文件或目录

【问题讨论】:

  • 那几行没有做任何事情,会在屏幕上打印一些东西,难怪它是空白的......除非你在脚本中进一步显示正在发生的事情,否则很难检查出什么问题...... .
  • 嗨 - 脚本有很多功能/它是一个完整的网站,所以我无法复制粘贴所有这些信息...

标签: php


【解决方案1】:

尝试从.htaccess 文件中设置 display_errors

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

【讨论】:

  • 有趣的建议。删除旧的 .htaccess 并将其设置为您提到的内容,得到“500 内部服务器错误”
  • 等一下 - 以上可能有问题。如果我只有这 3 行,我会在 phpinfo 脚本中得到 500 错误!如果我没有 .htaccess,则 phpinfo 脚本可以正常工作。
  • 500 个错误可以基于权限/所有权 - 我有时发现以 root 身份将脚本上传到客户帐户会导致脚本达到 500
  • 有趣 - 我不知道,但这里不是这样。 -rw-r--r-- 1 myuser myuser 86 Sep 10 05:23 .htaccess
  • 我也不是任何其他文件的根
【解决方案2】:

在您的浏览器中使用“查看源代码”来查看您的脚本是否正在编写任何浏览器可能无法以可见方式呈现的内容。

编辑

如果您收到 http 500 响应,那么您始终可以从命令行对您的脚本进行 php lint 检查:

php -l <filename.php>

对代码语法进行非常有用且经常被遗忘的检查。

【讨论】:

  • 嗨,马克 - 不,什么都没有显示(火灾变化后,只有 500 个)
  • 回应 php -l: 感谢您指出我不知道!它说:在 index.php 中没有检测到语法错误
  • 可能值得对所有包含的脚本进行 php -l lint 检查,但如果问题出在其中一个脚本中,我希望您会收到显示错误,因为主脚本已成功加载,应该执行包含
  • jailshell-3.2$ php -l index.php 在 index.php 中未检测到语法错误 jailshell-3.2$ php -l codelibrary/inc/user-top.php 在 codelibrary/inc 中未检测到语法错误/user-top.php jailshell-3.2$ php -l codelibrary/inc/variables.php 在 codelibrary/inc/variables.php 中未检测到语法错误 jailshell-3.2$ php -l codelibrary/inc/config.php 未检测到语法错误在代码库/inc/config.php
【解决方案3】:

检查 PHP 错误日志。通常是语法错误或缺少依赖项。

【讨论】:

  • 抱歉 - 想问一下 - 那会在哪里?
  • @tzm 所有其他 Web 服务器日志所在的位置。您必须为此咨询服务器管理员/支持
【解决方案4】:

问题可能如下:错误发生在您的脚本运行之前(即解析时。可能是一些语法错误)。由于您的脚本未运行,因此无法动态更改错误级别。您需要在您的php.ini 中设置error_reporting,或者尝试fire 的建议,这应该会产生相同的结果。

【讨论】:

    【解决方案5】:

    如其他答案中所述,如果您的脚本中存在错误,它将无法动态设置错误级别。

    您可以将正确的指令添加到当前目录中的 .htaccess 文件、网络服务器配置或 php.ini 文件 (http://php.net/manual/en/errorfunc.configuration.php)。你需要在前面加上 php_flag 指令,比如 php_flag display_errors on

    如果您无法将命令添加到 .htaccess 文件,则很可能您的服务器配置不允许覆盖这些属性。请咨询服务器维护人员以更改这些值,允许您基于每个文件夹覆盖这些指令并访问虚拟主机的错误日志。

    【讨论】:

      【解决方案6】:

      考虑到这是一个将由您的组之外的用户(浏览器/网络服务器)执行的脚本,我认为该文件应该设置为权限 755,因为这允许您进行更改而没有其他人确保浏览器可以执行脚本(755 -> -rwxr-xr-x)

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2020-07-17
        • 2013-08-25
        • 1970-01-01
        相关资源
        最近更新 更多