[英]Difference between MAMP and DigitalOcean LAMP Ubuntu 14.04 server messing up Joomla Custom Form Field
我在Joomla 2.5网站上编写了一个自定义表单字段。
我的表单字段从数据库表中选择一个ID值和标记名,并允许您选择多个复选框。 很简单
我的问题是该代码在我的开发服务器(MAMP,标准设置)上可以正常工作,但在DigitalOcean Ubuntu 14.04 VPS上却无法工作。
MAMP(上方)
VS
DigitalOcean(下)
是的,我在这里寻找想法。 我的主要思想是在PHP设置的“禁用的功能”中。
MAMP没有禁用的功能,Digital Ocean具有以下功能:
禁用的功能pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
有任何想法吗?
更新:我评论了禁用的功能片刻,重新启动服务器。 出现了一些有趣的不同控制台错误,但是并不能解决问题。 还有其他建议吗?
更新2:通过将文件名更改为生产服务器上的所有小写字母来解决。 下面的答案显示了详细信息。
当Joomla找不到自定义表单字段定义时,可能会发生这种情况-在这种情况下,它会还原为标准文本input
元素。
根据您将网站从MAMP设置转移到实时Ubuntu VPS的方式,您可能会丢失文件。
如果您遵循Joomla标准的自定义表单字段,则应具有以下内容:
/components/com_mycomponent/models/fields/mycomponentmultitags.php
我将检查您的自定义字段文件在VPS上是否存在,并且其权限设置是否正确(644应该这样做)。
关于问题的原因(即文件名大小写)。 因此,文件系统区分大小写,有些则不区分大小写,有些则区分大小写(即显示大小写),但不区分大小写。 我应该选择在MAMP(即Mac)上运行,OSX在HFS +上运行。 默认情况下,HFS +不区分大小写,但保留大小写。 因此,调用文件的所有小写名称将在MAMP上有效,但在Ubuntu上则无效(因为它 区分大小写 。
在这种情况下,您又回到了Joomla(又名PHP)找不到自定义表单字段定义的事实(又名CategoryCheckBoxes.php
文件,因为它正在寻找categorycheckboxes.php
)
好的,所以我可以使用它,但是我不喜欢不知道它为什么起作用。
同样,它适用于开发(MAMP),但不适用于我的生产VPS(标准Ubuntu 14.04 LAMP Apache2)
我变了:
管理员/组件/ com_mycomponent /模型/场/ CategoryCheckBoxes.php
至:
管理员/组件/ com_mycomponent /模型/场/ categorycheckboxes.php
是的,我将文件名全部小写,它像一个超级小符一样工作。 这就是我改变的一切。 有谁知道为什么会发生这种情况,以及为什么服务器类型会有所不同?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.