小编And*_*rea的帖子

无法使用PHP 7初始化mbstring

每当我尝试访问phpMyAdmin时,都会收到以下错误:

" 缺少mbstring扩展名.请检查您的PHP配置. "

我在CentOS 7服务器上运行LEMP堆栈.我选择使用PHP 7进行此安装.我没有在运行早期版本的PHP的相同设置上遇到此错误.

extension_loaded('mbstring')即使mbstring.ini(/etc/php.d/)包含:

; Enable mbstring extension module
extension=mbstring.so
Run Code Online (Sandbox Code Playgroud)

我100%确定我的服务器上安装了mbstring模块.

我完全难过,所以如果有任何想法,请告诉我.谢谢.

php mysql centos phpmyadmin

39
推荐指数
2
解决办法
7万
查看次数

Ubuntu服务器安装PHP 7没有Apache

我正在尝试将我的服务器重新设置为Lemp堆栈

我现在遇到的问题是安装没有 Apache的PHP 7 ,因为nGinx将是我的网络服务器.

所以,我补充说ppa:ondrej/php.跑了apt-get update,试图通过php7.0安装apt-get install php7.0

--nodeps 标志不起作用,因为我在Ubuntu 15.10上

我被告知:

The following extra packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libqdbm14
  php-common php-readline php7.0 php7.0-cli php7.0-common php7.0-json
  php7.0-opcache php7.0-readline
Suggested packages:
  apache2-doc apache2-suexec-pristine apache2-suexec-custom php-pear
  php-user-cache
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libqdbm14
  php php-common php-readline php7.0 php7.0-cli php7.0-common php7.0-json
  php7.0-opcache php7.0-readline
Run Code Online (Sandbox Code Playgroud)

我 …

php ubuntu nginx

25
推荐指数
3
解决办法
1万
查看次数

如何在Ubuntu上安装PHP 7(PHP下一代)

如何在Ubuntu上安装PHP 7(PHP下一代)?

我想在干净安装的Ubuntu上安装PHP 7,看看我会遇到什么问题.

这是官方(但微薄的指南):

https://wiki.php.net/phpng

php ubuntu

16
推荐指数
2
解决办法
3万
查看次数

返回带有返回类型声明的NULL

当我遇到问题时,我正在重构一个用于PHP7的代码库,特别是实现标量类型提示和返回类型提示.

我有一个属性的类,其中一个属性.此id不是必需的(您可以在不设置ID的情况下构造对象).在创建此类的新对象时,不要设置id,并且只要将其插入db(通过单独的映射器类),它就会获得id.

此映射器类需要检查对象是否已存在于db中,并通过检查是否已设置id来执行此操作:

if(empty($exampleObject->getId())) {
    // Insert object
} else {
    // Update object
}
Run Code Online (Sandbox Code Playgroud)

我将返回类型提示应用于我的代码库中的每个函数,问题是如果我强制执行int返回类型,函数getId()不能返回NULL.It TypeErrors,即使没有启用严格的输入:

致命错误:未捕获TypeError:ExampleClass :: getId()的返回值必须是integer类型,返回null

我认为没有为此getter设置返回类型提示,但我意识到问题可能不是返回类型提示,而是我使用混合返回类型的事实.我记得在某处读过使用混合返回类型是一件坏事,但我不知道如何在不使用混合返回类型的情况下解决这个问题.我可以:

  • 在getter中抛出异常,并在mapper类中设计检查,以便捕获该异常.
  • 捕获TypeError异常,并使用它来指示未设置id.
  • 将id属性设为public,因此我可以直接调用isset.
  • 添加不同的方法 hasId() return isset($this->id)

坦率地说,不喜欢任何这些解决方案,我想知道是否有更好的选择.对于这样的案例,最佳做法是什么?

另外,如果我启用了严格的输入,我不应该只获得TypeError吗?我认为PHP7默认为"弱类型提示".

php type-hinting php-7 php-7.1

16
推荐指数
1
解决办法
6607
查看次数

Windows 7中未加载PHP 7 FTP扩展

我最近在Windows 7操作系统(32位)中安装了PHP 7.我使用FTP库nicolab/php-ftp-client进行FTP功能,我得到一个例外

致命错误:未捕获FtpClient\FtpException:未加载FTP扩展!在

我看到了代码,有

if (!extension_loaded('ftp')) {
    throw new FtpException('FTP extension is not loaded!');
}
Run Code Online (Sandbox Code Playgroud)

所以我通过php检查了加载的扩展名

C:\Users\Tamil>php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
filter
gd
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]
Run Code Online (Sandbox Code Playgroud)

没有ftp扩展名.但是在PHP网站http://php.net/manual/en/ftp.installation.php中

Windows版本的PHP内置支持此扩展.您无需加载任何其他扩展即可使用这些功能.

我多次重启apache.仍显示FTP异常错误.你能指导我解决这个问题吗?

PHP版本是

C:\Users\Tamil>php -v
PHP 7.0.0 (cli) (built: Dec  3 2015 11:36:59) (ZTS ) …
Run Code Online (Sandbox Code Playgroud)

php ftp windows-7

9
推荐指数
1
解决办法
7239
查看次数

制作垂直日文文本

任何人都可以告诉我html/css从上到下,从右到左(如在书中)打印日文文本而不改变字符的实际标识?我使用的是UTF-16,如果有帮助的话.

html css cjk vertical-text

8
推荐指数
1
解决办法
2112
查看次数

phpinfo说php.ini路径是C:\ Windows但是那里没有php.ini

我们正在尝试从PHP5切换到PHP7.

我们现在安装了Apache并且PHP可以运行.

但是,我们在php.ini文件中所做的更改不起作用.

通过phpinfo()我们意识到原因是,Configuration File (php.ini) PathC:\Windows.

在我们的httpd.conf,我们有:

# PHP7 setup
LoadFile "C:/test/php/php7ts.dll"
LoadModule php7_module "C:/test/php/php7apache2_4.dll"
AddHandler php7-script .php
PHPINIDir "C:/test/php"
Run Code Online (Sandbox Code Playgroud)

我理解的是应该让Apache查找php.iniin c:\test\php(正确的斜杠在http.conf中使用)

不理解为什么Apache不找php.ini我们告诉它,我们把php.inic:\Windows那里仍无法读取(这是我们在加载模块php.ini没有在的phpinfo加载).

每次我们对php.inior 进行更改时httpd.conf,我们都会使用Apache监视器重启Apache.

php.ini除了我们上面尝试过的以外,我们如何告诉Apache读取特定目录中的文件?

附录:

在此输入图像描述

我们将所有内容都切换回PHP5,现在得到的错误与上面截图中的PHP路径相同.它说它现在是PHP 5.6.0所以它显然加载了新的PHP版本,但是有些东西已经改变,所以在任一版本中都没有读取php.ini文件.(???)

重启也无济于事.

php apache

7
推荐指数
1
解决办法
1693
查看次数

PHP:为什么当你为没有现有索引的数组添加值时它不会引发注意?

例如:

$array = [];

echo $array['bar']; // PHP NOTICE - trying to access not existing key`

$array['bar'][] = 'foo'; // Nothing
Run Code Online (Sandbox Code Playgroud)

我知道它创建了带有索引'bar'的数组,但PHP如何在内部处理?

php arrays

7
推荐指数
1
解决办法
145
查看次数

安装mamp pro php7

我从mamp download-pages下载了php 7文件夹并将其复制到mamp/bin/php中,但它没有显示在我的mamp pro php选择中(重启后).有人有同样的问题吗?

php mamp mamp-pro

6
推荐指数
0
解决办法
1010
查看次数

Ruby中<=>运算符的名称是什么?他们怎么称呼它?

在Ruby中有<=>运算符.在API中,他们没有命名,只是:

该类必须定义<=>运算符...

可比较使用<=>实现传统比较......

...集合中的对象还必须实现有意义的<=>运算符...

它叫什么名字?

ruby ruby-1.9 spaceship-operator

5
推荐指数
1
解决办法
315
查看次数