【问题标题】:On migration from localhost, setup.php not being read by server从本地主机迁移时,服务器未读取 setup.php
【发布时间】:2016-05-28 02:54:12
【问题描述】:

使用 phpmyadmin,我已将网站的文件和表格从本地主机迁移到服务器。

我的设置是:用户必须使用用户名和密码登录 (checklogin.php) 才能访问主页 (index.php)。

下面是checklogin.php的内容:

<?php
$host="localhost"; // Host name 
$username="garbo49"; // Mysql username 
$password="turf"; // Mysql password 
$db_name="garbo49"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "loginsuccess.php"
$_SESSION['myusername']= "myusername"; 
$_SESSION['mypassword']= "mypassword"; 
header("location:loginsuccess.php");
}
else {
echo "Wrong Username or Password";
}
?>

现在我可以登录(不会产生错误),并且我的主页 (index.php) 会显示(或者至少静态信息会显示) - 但只要我从 index.php 文件中删除 include ('setup.php')。否则,它会显示一个空白页。 Setup.php 是包含数据库、本地主机、用户名和密码详细信息的文件。

setup.php 中的所有详细信息都与新数据库的详细信息匹配(与上面显示的登录页面中指定的详细信息相同)。以下是setup.php的内容:

<?php
$hn = 'localhost';
$db = 'garbo49';
$un = 'garbo49';
$pw = 'turf'; 

#DB Connection:
 $conn = new mysqli($hn, $un, $pw, $db);
 if ($conn->connect_error) die($conn->connect_error);

#Functions:
require_once ('function.php');


#Section setup:
$newsrow = news_data($conn);
$reviewsrow = reviews_data($conn);
$blogrow = blog_data($conn);
$reciperow = recipe_data($conn);
$foodiqrow = foodiq_data($conn);
$eventsrow = events_data($conn); 


//$result->close();
//$conn->close();

?>

为什么服务器拒绝读取 setup.php,而所有的细节都与新数据库对应?希望有任何见解。

解决方案:在William Lee (cmets) 的指导下 - 查看错误日志显示,实际上中间的错误是:Call to undefined function mysqli_fetch_all()。所以我想这意味着我出色的主机没有提供 msqli 支持(它的 PHP 安装不是用 mysqlnd 编译的)。 所以我改用 $result->fetch_assoc() 。 A good explanation here.

【问题讨论】:

  • 转储 get_included_files() 会得到什么?
  • @William Lee 我应该在哪个文件中运行它?
  • 尝试将其放在代码的第一行:“error_reporting(E_ALL);”然后是“ini_set('display_errors', 1);”并尝试模拟空白页
  • setup.php 必须在 error_reporting 和 ini_set 之后,这样它会影响 setup.php 并向我们展示困扰您的问题。
  • 你的问题,你的主机不支持mysqli

标签: php localhost database-migration


【解决方案1】:

它是 VPS 服务器还是通过 FTP 上传到共享主机然后尝试为您的脚本设置 +x 权限。 (假设运行linux)

此外,当您在 VPS 上时,请尝试设置 www-data 用户(不使用 su php 时)。

第二次检查包含某些内容时的路径。在服务器之间移动时很高兴确保包含的文件是正确的。通常,当我开发时,我会尝试动态生成脚本的完整路径,因此无论路径如何,我都会 100% 确定脚本将被包含在内。

PHP 魔术常量可能会有所帮助:http://php.net/manual/en/language.constants.predefined.php

您还可以检查服务器日志以确定发生了什么错误。根据您使用 Plesk 或 Cpanel 或自定义配置的时间,您应该:

还可以在 php 上启用错误报告:http://php.net/manual/en/function.error-reporting.php

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2018-10-15
    • 2013-01-24
    • 2018-05-23
    相关资源
    最近更新 更多