设置适当的文件权限很难规定准确的步骤,因为这很大程度上取决于服务器的操作系统、web服务器和PHP设置。
通常,您希望您的权限设置,使您的web服务器可以读和写(递归)config.inc.php
files_dir
,并缓存/
,公共/
.或者,对于添加的特性和降低的安全性,您可以启用写入config.inc.php
,插件/
也许是去现场. xml
文件。您的web服务器应该对包中分发的所有其他文件和目录具有只读访问权限。
首先检查PHP在您的服务器上使用哪个服务器API。如果已经安装了OJS、OMP或OCS,请以“站点管理员”身份登录,单击“系统信息”,在页面底部单击“扩展PHP信息”。找到“服务器API”这一行。根据你使用的API (mod_php/SAPI或CGI/FastCGI),权限应该设置如下。
在Linux中,权限基于数字访问控制模式和文件所有权63。理解这个权限方案是必要条件。
例如,所有权apache: www
的权限750
(rwxr-x——
)表示apache用户可以读、写和执行;任何人的www
组可以读取或执行;文件被保护起来,不让其他人访问。请注意,“execute”对目录和文件来说是完全不同的两个意思!
一般来说,所有权缓存/
,公共/
,和其他网络可写目录应该是你的网络用户和网络用户的主要组,例如apache: www-data
.权限应该是750
.
其他非网络可写目录的所有权应该是你的用户,或者是网络用户组,或者是公共执行权限。例如:
myuser: www-data
与750
或
myuser: ourgroup
与755
网络可写文件也一样,但没有执行许可:
apache: www-data
与640
非网络可写文件可能是:
myuser: www-data
与640
或
myuser: ourgroup
与644
对于一些共享主机(例如,如果你唯一的访问是通过cPanel或类似的基于web的管理工具),你可能没有能力改变文件的所有权,你的网络服务器有效地运行作为你的用户。在这种情况下,您可能仍然有能力保护您的文件,使它们不可由您自己的用户写入(尽管这听起来违反直觉)。在共享主机中,您几乎肯定想要拒绝对文件的全局权限,但要特别注意主机的文档和支持。
由于安全配置可能有所不同,而且由于我们收到的关于文件权限的支持请求的数量,我们只能在这些问题上提供有限的帮助。在发布权限问题时,请尽可能具体。
PHP安全模式不是推荐的配置,可能无法正常工作。这是因为在某些配置中,它会导致PHPmkdir ()
命令功能创建因文件权限限制而无法读取或写入的目录。这是安全模式的一个限制,可能会阻止你在安全模式环境中使用OJS。
这很可能是由于服务器不正确地将HTML文件识别为其他HTML文件造成的。最快的诊断方法是检查Galley编辑页面:如果你上传了一个HTML文件,而标签字段显示的不是“HTML”(比如“Untitled”),那么该文件没有被正确识别为HTML,很可能无法正确显示。
OJS、OMP和OCS使用三种方法来确定文件类型,顺序如下:
文件-bi [filename here]
以下情况可能会出现问题:
此外,您可能会遇到由于文件格式不正确而导致的问题。如果您在识别HTML文件方面遇到了困难,您可能需要运行它们html tidy或者确保它们是有效的HTML。由文字处理程序创建的HTML文件可能很难被识别为HTML。
你可能还想搜索论坛对于关键词“magic mime”或“mimetype”,许多用户都遇到过这个问题,并且有一些关于如何解决它的讨论。
这可能是上面标识问题的结果,也可能是因为您的css文件在任何实际css之前的第一行包含了注释。尝试删除文件顶部的注释并重新上传。
请注意,当上传主CSS文件的修改副本时,经常会出现这种情况。我们不推荐这种方法——最好上传一个只包含您希望从默认布局修改的样式覆盖的CSS文件,因为主样式表是在任何自定义CSS文件之前应用的。这将有助于避免升级时的样式表问题。
字符编码问题主要出现在两种情况下:当期刊从另一个平台迁移到OJS时;或者(更常见的)当OJS日志从另一个服务器迁移到我们的服务器时。
检查当前的数据库设置以确保您使用的是您认为正在使用的字符集,这通常是有帮助的。一旦登录到MySQL,尝试以下步骤:
显示像'char%'这样的变量;显示像'collation%'这样的变量;
修复字符编码问题的目的是确保存储在数据库中的数据与数据库的字符集设置匹配,也就是说,我们将utf8数据存储在utf8数据库中。一旦这个实现了,我们想要确保OJS的config.inc.php设置匹配数据和db设置,即客户端,连接,数据库字符集设置都设置为utf8在config.inc.php。
下面的文章将很好地介绍字符集和编码:
显示像'char%'这样的变量
显示像'collation%'这样的变量
Mysqldump db——opt——default-character-set=latin1 result-file=latin1.sql
Mysqldump db——opt——default-character-set=utf8 result-file=utf8.sql
在从另一个机构迁移的过程中,你可能会收到一个MySQL转储,其中包括表定义设置为latin1(即CREATE table access_keys…DEFAULT CHARSET=latin1),即使表中保存的实际数据是UTF8。您可以在原始服务器上配置.inc.php来确认是否为这种情况:如果config.inc.php中的client_charset = utf-8,那么数据将以UTF8的形式存储在数据库中。
默认情况下,服务器上的日志被正确配置为在整个数据库和config.inc.php中使用UTF8设置。导入与Latin1表定义和UTF8数据不匹配的数据库将导致OJS中的字符显示问题。
以下转换步骤和导入过程可用于解决这些问题:
转换步骤:
——默认字符集= latin1——结果文件= dump.latin1.sql中的一个
dump.latin.sql
在vim中: % s / CHARSET = latin1 / CHARSET = utf8 / g中的一个
:设置fileencoding = utf8
: w dump.utf8.sql
导入步骤:
CREATE DATABASE import\_ojs DEFAULT CHARSET utf8; / /创建数据库
使用进口\ _ojs
设置名字utf8;
dump.utf8.sql来源;
等等,用你需要清理的表替换“article_settings”,用需要清理的表中的列替换“setting_value”。
在从lib-ojs服务器到sfulib服务器的迁移/升级过程中,MySQL转储文件可能会出现与双引号相关的编码字符问题,例如:“learning,â€<9d>,这应该是“学习”,即使使用正确的UTF8排序从数据库导出。
当用户从使用windows-1252字符集的MS Word中复制和粘贴花哨的/智能引号时,这个问题就会显示出来,它与UTF8中的任何东西都不匹配。这将得到如下序列:“learning,â€<9d>。
以下步骤可用于解决此编码问题:
/usr/local/lib/python3.6/site-packages / ftfy / cli.py
$ vim +100 cli.py
)给fix_file函数添加一个额外的参数' uncurl_quotes=False '。它会像这样:fix_file(file, encoding=encoding, fix_entities=fix_entities, normalization=normalization, uncurl_quotes=False):
美元= client.clean ftfy——输出。sql client.orig.sql
如果您遇到像ââ,—/ ââ,—“/ ââ,—┢/等奇怪的字符,尝试以下SQL命令来搜索并替换它们(从这里获取)博客):
UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ, ' Å "', '"');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ,´','"');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ,´â "¢'," ');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'Ãⅷâ, ' Ëœ', '"');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ, ' '','" " ');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ, ' ' ', ' '" "');UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'Ãⅷâ, '—');/ /修改文章UPDATE article\_settings SET SET \_value = REPLACE(设置\_value, 'ââ, ' ε ', '" ε ');
如果以上方法都失败了:
Kurt已经运行了以下dump命令并取得了一些成功,但没有解释它到底做了什么:
mysqldump ocs-$USERNAME——opt——default-character-set=latin1——skip-set-charset——single-transaction——ignore-table=ocs-$USERNAME。paper_search_keyword_list——ignore-table商务- $ USERNAME =。paper_search_object_keywords——ignore-table商务- $ USERNAME =。paper_search_objects——结果文件= / tmp / USERNAME.sql美元
1:检查你的服务器错误日志
通常,这表明发生了PHP错误,消息已经发送到您的web服务器或系统日志文件。检查那里-例如。/var/log/apache/error.log
,尽管确切的位置将取决于您的服务器配置—详细信息。
2:检查文件权限
如果您还没有安装OJS、OMP或OCS,那么最有可能的原因是缓存/或缓存/t_compile目录中的文件权限问题。有关文件权限的信息,请参阅文档/README。
3:进一步的故障排除
如果你不能访问你的服务器日志文件,你可以尝试在index.php的顶部添加以下内容,以导致错误消息被发送到浏览器:
报错(display_errors, E_ALL);
如果您碰巧在Windows IIS环境中运行,您可能还必须启用fastcgi.impersonate = 1
在你的php.ini文件中。
您可能还想临时修改(大约)文件的第27行lib / pkp /包括/ functions.inc.php
,删除@操作符,所以它看起来像这样:
if((include_once BASE_SYS_DIR.'/'.$filePath) === false) {
记得在之后恢复该更改。
有时,软件中包含的特定PHP脚本在没有任何错误信息的情况下无法执行,例如,由于错误的修改或文件权188金宝搏下载app限问题。要确定哪个脚本可能导致问题,您可以编辑lib / pkp /包括/ functions.inc.php
找到下面这行:
导入函数(类){
添加以下:
echo“导入”。美元的类。“\ n”;
这将导致OJS、OMP或OCS在导入类文件之前列出它们(对于网站的任何查看器)。如果您有一个特定文件的问题,它将是最后列出的一个。仔细检查它的文件权限,并尝试通过PHP linter (PHP -l path/to/file.inc. PHP)运行它。
完成后,请务必恢复此更改。
stacktrace通过显示当前页面的代码显示路由。当显示错误时,stacktrace通常有助于跟踪错误是如何产生的,方法是让开发人员遍历代码并查看他们必须采取何种路径来重现错误。
要在OxS中对错误启用堆栈跟踪,请打开config.inc.php中的' show_stacktrace '选项(靠近文档底部)。stacktrace的示例如下:
数据库错误:Error: invalid input syntax for integer: ""堆栈跟踪:文件:/var/www/ojs/ classes/article/articlegalleydao . incy .php第76行函数:DAO->检索("SELECT COUNT(*) FROM article_galleys WHERE public_galley_id = ?/var/www/ojs/classes/ submit /form/ArticleGalleyForm.inc.php line 233 Function: article legalleydao ->publicGalleyIdExists("pdf", "") File: /var/www/ojs/pages/ sectioneditor / submissiondithandler.com .php line 1459 Function: article legalleyform ->execute("layoutFile") File:/var/www/ojs/pages/ sectioneditor / submissiondithandler .inc.php line 1314 Function: submissiondithandler::uploadGalley("layoutFile") File: /var/www/ojs/pages/ sectioneditor /SectionEditorHandler.inc.php line 469 Function:SectionEditorHandler::uploadLayoutFile(Array(0))文件:/var/www/ojs/index.php第88行函数:call_user_func(Array(2), Array(0))
您的PHP内存限制很可能设置得太低了。默认情况下,它通常设置为8mb,但是OJS、OMP和OCS至少需要16mb才能正常运行(对于偶尔的任务,如升级,通常需要更多)。你可以找到memory_limit
在服务器的配置指令中php . ini
配置文件。
你可能会收到类似的错误
数据库错误:表ojs。期刊的不存在
错误的' ojs '部分是在安装过程中指定的数据库名称。最可能发生的情况是,您试图创建数据库,安装程序试图用必要的数据填充数据库,但由于某种原因无法这样做。可能的原因包括您的数据库系统(例如。MySQL)不允许创建基于web的数据库;或者不允许大规模的表创建。最好的解决办法是:
config.inc.php
到原件(复制过来)config.TEMPLATE.php
会这样做);请注意,当你点击手动安装按钮时,结果页面会说OJS/OMP/OCS安装已经成功完成,但这并不完全正确:你仍然需要复制SQL语句并手动添加到数据库中。
注意:您还可能遇到插件错误。在过去有插件错误,插件试图访问“日志”表之前,安装程序已经创建了表;这些将导致一个“Table”ojs。当有人试图首先加载安装程序页面时,会出现“期刊不存在”的消息。在这种情况下,您可以通过检查堆栈跟踪将其缩小到特定的插件。
如果你运行的是PHP 5.3+(这是你应该做的),你需要运行OJS 2.4.0+, OMP 1.0+或OCS 2.3.6+。旧版本的软件不能在新版本的PHP上运行。188金宝搏下载app
如果你运行的是PHP 7+,你需要运行OJS 3.0+。
OJS和OMP 3.1.2+需要PHP 7.1或以上版本。指文档/自述的OJS/OMP版本,了解更多关于PHP系统需求的信息。
请注意:如果你运行的是OJS或OMP在PHP7+ LAMP栈上,请记住更新MySQL驱动参数(数据库部分)config.inc.php
文件,例如:
司机= mysqli