gpt4 book ai didi

php - 连接到数据库 - 本地 PostgreSQL - PHP 应用程序

转载 作者:行者123 更新时间:2023-11-29 11:17:01 28 4
gpt4 key购买 nike

我无法在本地运行基于 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

您的数据库密码:     密码

正确填写上述数据库并单击进程按钮(如下图所示)后,它会向我显示“需要身份验证”消息错误:

enter image description here

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

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

您能否指导我如何使用 Windows 7 在本地主机上运行应用程序。

如果在本地运行该软件时缺少某些内容,请帮助和指导我。

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

最佳答案

首先 - “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 ) 中的代码,看看它是否有助于将其融入您的项目。

关于php - 连接到数据库 - 本地 PostgreSQL - PHP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560781/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com