我无法在本地运行基于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);
}
}
?>
在localhost上创建运行应用程序的数据库后,它要求我填写
这样的表单您的数据库名称:plpgsql
您的数据库主机:localhost
您的数据库端口:5432
您的数据库用户名:postgres
您的数据库密码:密码
在正确填写上述数据库并点击进程按钮后,如下面的屏幕截图所示,它给了我认证所需的消息错误:
我是否遗漏了指向数据库以连接它的内容或语法问题。
我正在使用Visual Studio 2015运行php项目,它很难调试,因为它不会给我任何代码错误,不像ASP.NET语言当我们用Visual Studio运行.NET项目时它会给我们逐行和语法错误。
您能否指导我如何使用Windows 7在localhost上运行应用程序。
如果缺少某些内容以便在本地运行软件,请帮助并指导我。
我还想知道如何在此项目中运行或使用mysql或MS SQL作为Postgresql的替代方法
答案 0 :(得分: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)中的代码,看看它是否有助于将其融入您的项目中。