网站上传后错误500(没有.htaccess,没有WP)

时间:2017-01-19 19:47:12

标签: php apache syntax-error error-log

我刚刚上传了我在主机上构建的新项目的第一个版本。要清楚,一切都准备好开始工作,但最后我得到的是:

  

HTTP ERROR 500

我知道what does this mean

我的项目 100%手工制作PHP ,没有WP或其他CMS /平台,并且没有Apache文件(稍后会添加.htaccess)。<登记/> 但是有一个 error_log 文件,它总是有相同的行:

[19-Jan-2017 12:59:06 America/Chicago]
PHP Parse error:  syntax error, unexpected '$sgbd' (T_VARIABLE)
in /path/to/the/file.php on line 1

它指的是我的数据库连接文件:

<?php
$sgbd = "mysql";
$host = "localhost";
$database = "dont_worry";
$charset = "utf8";
$user = "this_is_not";
$password = "my_infos";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];
try {
    $bdd = new PDO('' . $sgbd . ':host=' . $host . ';dbname=' . $database . ';',
'' . $user . '', '' . $password . '', $options);
} catch (Exception $e) {
    die('Erreur : ' . $e->getMessage());
}
?>

这是session_start();之后我的网页调用的第一个文件。我真的不明白什么是错的 我不准备这个,谢谢你的帮助!

编辑:我“解决”了这个问题,但不知道是怎么回事。该文件在上传时自动修改,删除了PHP代码开头和我的第一个变量之间的空格:

1 | <?php$sgbd = "mysql";

我验证了这个文件并对其进行了多次修改以尝试找到解决方案。唯一的方法是删除并重新上传整个项目。

1 个答案:

答案 0 :(得分:3)

引用的源代码中没有语法错误,但如果您在PHP 5.3或更早版本上运行此代码,那么:

$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
];

将导致语法错误short array syntax is available since 5.4

除上述内容外,还有以下一行:

$bdd = new PDO('' . $sgbd . ':host=' . $host . ';dbname=' . $database . ';',
               '' . $user . '', '' . $password . '', $options);

过度使用了。你输入''绝对没有意义,因为这只是等于字符串。第二行还表明您在理解变量变量值之间的差异时遇到了问题。这应该很容易写成:

$bdd = new PDO("{$sgbd}:host={$host};dbname={$database};", $user, $password, $options);

除此之外,它不应该是你面临的500的原因。

修改

如果你可以从命令行调用PHP(在大多数linux上它是单独的包(即php-cli,所以你可能需要先安装它)),然后你可以使用{{{}来检查文件的语法。 1}}开关:

-l

如果有任何问题,那么您将看到错误消息。如果您只看到$ php -l file.php 但没有详细信息,请将Errors parsing file.php添加到参数列表中:

-d error_reporting=E_ALL

或者,您可以直接尝试在浏览器中访问您的文件(如果它不在文档根目录中,只需将其复制以使其可用 - 无论单独调用它都没关系 - 您只需要确保正在查看正确的文件 - 如果你这样做,那么将记录语法错误。如果这是错误的文件,那么真的不会发生任何事情。