我想更新php版本,目前我有5.5.38而且我想要7.1
到目前为止我尝试使用此命令:
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.1
我尝试了几个不同的版本,但没有一个工作。
它打开bash_profile一秒钟然后我得到Received SIGHUP or SIGTERM
并在下面发送消息:
缓冲区写入/Users/Morpheus/.bash_profile.save.6
不确定出了什么问题以及为什么它不会更新...
有什么想法吗?
感谢。
答案 0 :(得分:23)
在mac上更新php版本的最简单方法是通过Homebrew。
如果您没有酿造,请访问https://brew.sh/
或通过终端/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
完成自制软件安装时,请执行以下命令:
brew update && brew upgrade
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew unlink php56
brew install php71
如果先前没有通过brew安装PHP 5.6,您可能会收到错误,但不用担心,您可以继续。
您还可以将上述命令brew install php71
中的命令替换为brew install php70
,将版本更改为7.0。
您可以按命令检查输出。
php -v
如果php -v
的输出仍然没有回应版本7,只需输入此命令并点击在终端输入。
export PATH=/usr/local/php5/bin:$PATH
答案 1 :(得分:4)
答案 2 :(得分:1)
尝试使用以下命令
brew update
brew install php@72
如果显示以下错误,则
“错误:名称为“ php”的公式不可用
尝试
brew install php@7.2
答案 3 :(得分:0)
你可以brew upgrade php7
或brew uninstall
旧的PHP版本。
最后,我建议你brew install php-version
,php-version可以帮助你改变你的php版本
答案 4 :(得分:0)
安装php
brew install php@7.2
将所需的PHP安装到PATH
echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
然后确保一切正常
php -v
php --version
此命令将显示ini文件的加载位置
php --ini
答案 5 :(得分:0)
尝试使用该命令,它对我来说很好用
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3
答案 6 :(得分:0)
如果您运行上面的所有安装命令,但是在检查PHP版本时,它仍然链接到旧版本。所以你们可能想更新using System;
using Microsoft.AspNetCore.Components.Forms;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace TimeRecording.Extensions
{
public static class EditContextExtensions
{
static PropertyInfo IsModifiedProperty;
static MethodInfo GetFieldStateMethod;
/// <summary>
/// Validates an entire object tree
/// </summary>
/// <param name="editContext">The EditContext to validate the Model of</param>
/// <returns>True if valid, otherwise false</returns>
public static bool ValidateObjectTree(this EditContext editContext)
{
var validatedObjects = new HashSet<object>();
ValidateObject(editContext, editContext.Model, validatedObjects);
editContext.NotifyValidationStateChanged();
return !editContext.GetValidationMessages().Any();
}
public static void ValidateProperty(this EditContext editContext, FieldIdentifier fieldIdentifier)
{
if (fieldIdentifier.Model == null)
return;
var propertyInfo = fieldIdentifier.Model.GetType().GetProperty(
fieldIdentifier.FieldName,
BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
var validatedObjects = new HashSet<object>();
ValidateProperty(editContext, fieldIdentifier.Model, propertyInfo, validatedObjects);
}
private static void ValidateObject(
EditContext editContext,
object instance,
HashSet<object> validatedObjects)
{
if (instance == null)
return;
if (validatedObjects.Contains(instance))
return;
if (instance is IEnumerable && !(instance is string))
{
foreach (object value in (IEnumerable)instance)
ValidateObject(editContext, value, validatedObjects);
return;
}
if (instance.GetType().Assembly == typeof(string).Assembly)
return;
validatedObjects.Add(instance);
var properties = instance.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (PropertyInfo property in properties)
ValidateProperty(editContext, instance, property, validatedObjects);
}
private static void ValidateProperty(
EditContext editContext,
object instance,
PropertyInfo property,
HashSet<object> validatedObjects)
{
NotifyPropertyChanged(editContext, instance, property.Name);
object value = property.GetValue(instance);
ValidateObject(editContext, value, validatedObjects);
}
private static void NotifyPropertyChanged(
EditContext editContext,
object instance,
string propertyName)
{
if (GetFieldStateMethod == null)
{
GetFieldStateMethod = editContext.GetType().GetMethod(
"GetFieldState",
BindingFlags.NonPublic | BindingFlags.Instance);
}
var fieldIdentifier = new FieldIdentifier(instance, propertyName);
object fieldState = GetFieldStateMethod.Invoke(editContext, new object[] { fieldIdentifier, true });
if (IsModifiedProperty == null)
{
IsModifiedProperty = fieldState.GetType().GetProperty(
"IsModified",
BindingFlags.Public | BindingFlags.Instance);
}
object originalIsModified = IsModifiedProperty.GetValue(fieldState);
editContext.NotifyFieldChanged(fieldIdentifier);
IsModifiedProperty.SetValue(fieldState, originalIsModified);
}
}
}
。
对于我来说,我通过命令打开位于PATH
目录中的.bash_profile
:
HOME
然后,我将路径添加到新版本的PHP:
nano ~/.bash_profile
最后,运行PATH=/usr/local/Cellar/php/7.4.4/bin:<other_paths>
命令刷新终端窗口并再次检查PHP版本。
希望这会有所帮助。
答案 7 :(得分:0)
尝试使用以下命令
brew update
brew upgrade php
要么
brew reinstall php
答案 8 :(得分:0)
我运行的是 Mac OS 10.13.8 并且一直运行到 PHP 7.3 版
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3.8-20190811-205217