【问题标题】:Connecting to the Database - PostgreSQL locally - PHP application连接到数据库 - 本地 PostgreSQL - PHP 应用程序
【发布时间】:2016-09-18 17:45:11
【问题描述】:

我无法在本地运行基于 postgresql 的 PHP 应用程序

该项目在 Github 上是开源的,它是我从这个链接https://github.com/Openpoint/Imager 下载的一个在线视觉链接书签和图像抓取工具

安装说明说:使用 UTF8 编码创建一个新的空 Postgresql 数据库并将您的浏览器指向您的成像器 URL

在 Postgresql 中,我没有看到任何创建空数据库的选项,我所做的是创建一个新数据库并运行以下脚本来创建项目中给出的表和数据库:

SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

SET search_path = public, pg_catalog;
SET default_tablespace = '';

SET default_with_oids = false;

CREATE TABLE pages (
id integer NOT NULL,
url text,
image character varying(256),
title character varying(256),
sfw boolean,
biggest integer DEFAULT 0
);

ALTER TABLE public.pages OWNER TO _dbowner_;

CREATE SEQUENCE pages_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER TABLE public.pages_id_seq OWNER TO _dbowner_;
ALTER SEQUENCE pages_id_seq OWNED BY pages.id;


CREATE TABLE users (
id integer NOT NULL,
username text NOT NULL,
hash text NOT NULL,
salt text NOT NULL,
authtoken character varying(50),
email text NOT NULL,
role character varying(256) NOT NULL,
realname character varying(256),
invitedby character varying(256),
status character varying(10) DEFAULT 'Invited'::character varying,
date date
);

ALTER TABLE public.users OWNER TO _dbowner_;

CREATE SEQUENCE users_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

ALTER TABLE public.users_id_seq OWNER TO _dbowner_;

ALTER SEQUENCE users_id_seq OWNED BY users.id;

ALTER TABLE ONLY pages ALTER COLUMN id SET DEFAULT nextval('pages_id_seq'::regclass);


ALTER TABLE ONLY users ALTER COLUMN id SET DEFAULT nextval('users_id_seq'::regclass);

ALTER TABLE ONLY pages
ADD CONSTRAINT pages_pkey PRIMARY KEY (id);

ALTER TABLE ONLY users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;

另外在 settings.php 我有这个连接代码:

$settings->dbase=array(
'username'=>'',
'password'=>'',
'db_name'=>'',
'host'=>'',
'port'=>''
);
$settings->installfile='/install.php'; //The location of your install hook file

在 install.php 中给出了这些代码:

class install {
function install($dbase,$settings) {
    $this->dbase=$dbase;
    $this->settings=$settings;
}



public function checkdb($external){
    $sql="select 1 from users";
    $response=$this->dbase->query($sql,null);   

    if(!$this->dbase->success){
        if($external){
            echo 'false';
            return false;
        }else{          
            return false;
        }
    }else{
        if($external){
            echo 'true';
            return true;
        }else{          
            return true;
        }
    }       
}

public function checkfinished(){
    $sql="SELECT COUNT(*) FROM users";
    $response=$this->dbase->query($sql,null);   
    $response=$response->fetchAll();
    if($response[0]['count'] > 0){
        return true;
    }else{
        return false;           
    }   

}
public function makedb(){

    $sql=file_get_contents($_SERVER['DOCUMENT_ROOT'].'/user_mod/install/dbase.sql');
    $sql=str_replace ( '_dbowner_' , $this->settings->dbase['username'] , $sql );
    $response=$this->dbase->query($sql,null);
    $response=$response->fetchAll();        
} `}`



if (!empty($_POST)){
if($_POST['method'] == 'checkdb'){
    require_once($_SERVER['DOCUMENT_ROOT']."/user_mod/settings.php");
    require_once($_SERVER['DOCUMENT_ROOT'].'/user_mod/database.php');
    $dbase = new dbase($dbh);
    $install = new install($dbase,$settings);
    $install->checkdb(true);    
}
if($_POST['blinduser'] == 'connect'){
    if($handle = file($_SERVER['DOCUMENT_ROOT']."/user_mod/settings.php")){
        $foo;
        foreach($handle as $line){
            if(strpos($line,"'username'=>") !== false){
                $line="    'username'=>'".$_POST['dbusername']."',\n";
            }
            if(strpos($line,"'password'=>") !== false){
                $line="    'password'=>'".$_POST['dbpword']."',\n";
            }
            if(strpos($line,"'db_name'=>") !== false){
                $line="    'db_name'=>'".$_POST['dbname']."',\n";
            }
            if(strpos($line,"'host'=>") !== false){
                $line="    'host'=>'".$_POST['dbhost']."',\n";
            }
            if(strpos($line,"'port'=>") !== false){
                $line="    'port'=>'".$_POST['dbport']."'\n";
            }
            $foo=$foo.$line;
        }
    }
    file_put_contents($_SERVER['DOCUMENT_ROOT']."/user_mod/settings.php", $foo);    
}   
}
?>

创建在本地主机上运行应用程序的数据库后,它要求我填写表格,如

您的数据库名称:    plpgsql

您的数据库主机:    localhost

您的数据库端口:    5432

您的数据库用户名:     postgres

您的数据库密码:   密码

在正确填写上述数据库并单击如下屏幕截图所示的过程按钮后,它给了我需要身份验证的消息错误:

我是否缺少指向数据库以连接它的某些内容或语法问题。

我正在使用 Visual Studio 2015 运行 php 项目,它很难调试,因为当我们使用 Visual Studio 运行 .NET 项目时,它不会给我任何代码错误,这与 ASP.NET 语言不同,它会逐行和语法给我们错误。

您能否指导我如何使用 windows 7 在 localhost 上运行应用程序。

如果缺少在本地运行该软件的内容,请帮助并指导我。

我还想知道如何在这个项目中运行 mysql 或 MS SQL 或将其用作 Postgresql 的替代品

【问题讨论】:

    标签: php mysql database visual-studio postgresql


    【解决方案1】:

    首先 - “Imager”是一个非常 Alpha 阶段的实验,我根本没有在本地安装或非 Linux 托管环境中测试过它。

    从您的 Stackoverflow 帖子中,您得到的“需要身份验证”弹出窗口与连接到数据库无关 - 它与您本地 Web 服务器上的权限有关(尝试检查 Apache 日志)。我发现设置新的 PGsql 数据库最简单的方法是使用 PhpPgadmin 的 GUI。

    您也可以尝试手动填写数据库连接详细信息 (https://github.com/Openpoint/Imager/blob/master/user_mod/settings.php) - 从第 30 行开始。编辑文件并保存。

    很抱歉,我无法为您提供此 Alpha 实验项目的支持。如果您只对图像抓取方面感兴趣,请查看 (https://github.com/Openpoint/Imager/blob/master/php/process.php) 中的代码,看看它是否有助于将其融入您的项目。

    【讨论】:

    • 您是否有任何在线链接可以实时测试您的软件,因为 github imager.buzz 中的给定链接不起作用
    • 我刚刚更新了 imager.buzz,因为域名已过期。它应该会在 24 小时内重新上线。
    • imager.buzz 确实很棒!我想问一下,我们可以从 Github github.com/Openpoint/Imager 的源项目中获得与给定链接“ imager.buzz ”中所示相同的结果吗?
    • Github 代码与在 imager.buzz 上运行的代码相同。这是 ALPHA 代码,我没有资源来管理所有环境。它在带有 Apache 和 PostGresql 服务器的 Ubuntu 14.04 上运行。
    猜你喜欢
    • 2022-01-26
    • 2012-11-02
    • 1970-01-01
    • 2015-02-25
    • 2023-01-31
    • 2017-06-10
    • 2020-09-04
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多